MVN 使用问题及解决办法集锦
1 当你在pom里面定义了一堆properties时,发现你需要把它们分离,用专属properties文件来存储时。properties-maven-plugin这上plugin决对能满足了。
请看定义片断:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>properties-maven-plugin</artifactId>
<version>1.0-alpha-2</version>
<executions>
<execution>
<id>pre-clean-config</id>
<phase>pre-clean</phase>
<goals>
<goal>read-project-properties</goal>
</goals>
<configuration>
<files>
<file>config.properties</file>
</files>
</configuration>
</execution>
<execution>
<id>initialize-config</id>
<phase>initialize</phase>
<goals>
<goal>read-project-properties</goal>
</goals>
<configuration>
<files>
<file>config.properties</file>
</files>
</configuration>
</execution>
</executions>
</plugin>
注意这里定义了两个phase, 分别用ID进行了区分。这里的应用场景是这样的,我在执行mvn clean, mvn install时,都需要读取properties文件里面的值,但是clean,install它们的生命周期是分开的,所以针对这种情况需要单独定义。stackflow上有人也碰到了这个问题,http://stackoverflow.com/questions/9912632/maven-reading-a-property-from-an-external-properties-file.
2 JAVA程序直接调用TOMCAT,进行程序调试。
之前同事推荐使用jetty进行WEB程序调式,经过我的使用,感觉不太理想。它的实现方式主要是要引入Jetty运行时的依赖,然后再需要手动写一个类去启动jetty 。其间碰到些莫名其妙的问题,毕竟它不是一个非常专业的WEB容器,对页面解析这一块还是没有标准的tomcat,resin友好。所以,我决定采用常用的tomcat来进行集成(0代码),步骤如下:
2.1首先增加一个MVN环境下面TOMCAT调试的环境变量
MAVEN_OPTS=Xdebug -Xrunjdwp:transport=dt_socket,address=1044,server=y,suspend=n
2.2修改POM,增加plugin的支持
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>tomcat-maven-plugin</artifactId>
<version>1.1</version>
<configuration>
<path>/</path>
</configuration>
</plugin>
这里,你可以自定义端口,ContextPath等变量
2.3右键POM,配置一个DEBUG的Run Configuractions,指定你的工作区间,JRE等等,运行即可。
3 中文配置文件自动转码utf-8
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>native2ascii-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>native2ascii</goal>
</goals>
<!-- specific configurations -->
<configuration>
<encoding>UTF8</encoding>
<includes>
<include>messages/messages.properties</include>
<include>messages/messages_zh_CN.properties</include>
</includes>
</configuration>
</execution>
</executions>
</plugin>
That's it,so easy!(不定时更新)