Category Archives: Dev Tools

eclipse里无法把一个包直接拖到另一个包下,怎么办?

eclipse里如果把一个包直接拖到另一个包下,它会提示你是不是要把包命名为“com.xxx.copy”;这根本不是我们想要的。 StackOverflow里有人给出了正确的做法:重命名包–把com.xxx改成com.yyy.xxx . 他说: 引用 Use the package explorer view and rename the package. It asks for renaming updating references, renaming sub packages, update textual references in comments and and also non-Java text files. Click on the preview and then ok.

在本机建立一个简单的svn服务器

svn内置了svnserve,帮你建立一个小巧的svn服务器 1.先建立svn repository:     svnadmin create /home/kent/diskE/kent-svn-repo 2.启动svnserve:    svnserve -d -r /home/kent/diskE/kent-svn-repo 3.客户端读:    svn info svn://localhost 4.修改repository权限,增强匿名用户的写权限    cd /home/kent/diskE/kent-svn-repo vi svnserve.conf #在[general]设置anon-access=write 注: 1.svnserve服务器的端口是 3690 2.停止svnserve的办法是 killall -9 svnserve

用mvndebug在eclipse里跟踪调试maven的执行

如何在eclipse里跟踪调试maven的执行? 见Stackoverflow上一个人的回答: 回答者:Jean Hominal If you want to debug Maven execution in eclipse, here is how I did it, with mostly command-line tools (no Eclipse plugin used) (may be off at some points, I haven’t done that for 6 months):     * Run, from the command line, mvndebug in place of the mvn command. Maven will […]

《Maven实战》笔记 6.1 – Properties

pom.xml 里可以自定义Property,然后通过${}来引用它 <properties> <spring.version>2.5.6</spring.version> </properties> … <dependency> <artifactId>spring-core</artifactId> <version>${spring.version}</version> </dependency> 实际上,maven支持6大类property 1.上面说所的自定义属性 2.Maven内置属性,如${basedir}表示项目根目录 3.POM属性,如${project.artifactId}, ${project.build.sourceDirectory} 4.Settings属性,如${settings.localRepository} 5.Java系统属性,如${user.home} 6.环境变量属性,如${env.JAVA_HOME}

《Maven实战》笔记 6.2 – env-specific的配置

env-specific的配置指的是系统的参数在不同环境下要使用不同的配置,比如jdbc依赖的数据库用户名/密码在开发环境跟在生产环境肯定是不一样的。 Maven为此提供的解决方案是:   1.参数以变量方式定义在resource目录下的配置文件中,如${db.url}, ${db.user}等   2.pom里设定不同环境下的值,并通过"profile"来标识不同的环境 <profiles> <profile> <id>dev</id> <properties> <db.url>jdbc:mysql:dev</db.url> … </properties> </profile> <profile> <id>prod</id> <properties> <db.url>jdbc:mysql:prod</db.url> … </properties> </profile> </profiles>    3.编译时,把配置文件中的变量替换成具体的值       a.首先要打开maven的resource filtering功能 (见maven-resource-plugin的配置说明)       b.编译时再指定profile,告诉Maven当前是哪个环境         mvn package -Pdev ======================================== 个人看来,这种解决方案还是相当弱的:   1. 不支持默认值。一个项目可能有几十个env-specific配置,如果不支持默认值,就意味着每个开发人员都得在本地定义这几十个配置;如果某人增加了一个配置并提交到公共分支,另一个人如果不知情,没有定义相应的值,在编译时Maven就无法为新的配置赋值,最后会把${xxx}带到构件中   2. 属性的赋值只能写在pom.xml或settings.xml里,导致很多不便     a.如果写在pom.xml里,由于pom.xml一般纳入了版本控制系统,这意味着张三和李四把pom.xml 签出来后,要再修改其中的dev profile以使它适应本机的配置,然而,这个文件又不准提交。这是出错的温床,也是烦恼之源。     b.如果写在各自的settings.xml里,又很容易出现多项目下,profile命名的撞车问题。比如某人同时开发两个项目,项目A定义了一个叫dev的profile, 项目B也定义了一个叫dev的profile,但settings.xml里又只能定义一个叫dev的profile,这咋办? 

《Maven实战》笔记 4.1 – lifecycle和plugin的概念

a.Maven定义了标准的lifecycle,如 编译 -> 测试 -> 打包,每个步骤称作一个"phase"。phase有先后关系,执行一个phase前必须先执行前面所有的phase b.phase有名无实,只是一个虚的接口,本身并不做任何事情 c.plugin则做一些真正的事情,比如真正的编译、打包等。一个插件可以有多个功能点,每个功能点称作一个"goal" d.把phase 和 goal关联起来,就可以基于lifecycle进行构建了

《Maven实战》笔记 4.2 – maven命令与lifecycle&plugin的关系

mvn test   执行lifecycle "default"的phase "test". 由于phase "test"被绑定到surefire plugin的test goal, 因此surefire的test goal会被执行; 同时, phase "test"之前的所有的phase也会被执行。 mvn eclipse:eclipse   执行 eclipse plugin中的eclipse goal. "eclipse" plugin是哪个plugin? 如果没有特殊配置,Maven会去 http://repo1.maven.org/maven2/org/apache/maven/plugins/maven-metadata.xml等默认metadata中寻找prefix=eclipse的配置