1:为了使项目结构更为清晰,Maven区别对待Java代码文件和资源文件,
maven-compiler-plugin用来编译Java代码,
maven-resources-plugin则用来处理资源文件。
maven-compiler-plugin(可以指定jdk版本及编译使用的字符集,这里使用的是compiler2.0版本)
<plugin> <artifactId>maven-compiler-plugin</artifactId> <version>2.0</version> <configuration> <source>1.6</source> <target>1.6</target> <encoding>UTF-8</encoding> </configuration> </plugin>
2:过滤不毕要的资源文件
<build> <filters> <filter>D:/WebApp/rmi.test/antx.properties</filter> </filters> <resources> <resource> <directory>src/main/resources</directory> <includes> <include>**.xml</include> </includes> <filtering>true</filtering> </resource> <resource> <directory>src/main/resources</directory> <excludes> <exclude>**.xml</exclude> </excludes> </resource> </resources> </build>
可实现将src/main/resources下的所有.xml文件过滤,用D:/WebApp/rmi.test/antx.properties中的配置属性替换.xml中${xx.xx.xx}.
3:
默认的主资源文件目录是src/main/resources,很多用户会需要添加额外的资源文件目录,这个时候就可以通过配置maven-resources-plugin即使用<resources>来实现。如下:
<resource> <directory>src/main/webapp</directory> <includes> <include>WEB-INF/**.xml</include> </includes> <filtering>true</filtering> </resource>
编译后,src/main/webapp/WEB-INF及其下的所有.xml文件将同时在target\工程名\WEB-INF\classes路径下
转的
Maven是一个常用的Java build Manager, 使用Maven可以很好的对Java Project的dependency进行管理. 这里我记录几个比较常用的Plugin配置.
- 生成JAR打包文件:
过滤xml不打到jar包中
配置jar包的入口,即manifest.mf的Main-Class(main方法所在的类)
配置jar包的lib依赖,即manifest.mf的Class-Path
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>2.3.2</version> <configuration> <excludes> <exclude>conf/*.xml</exclude> </excludes> <archive> <manifest> <mainClass>com.chinacache.billing.normandy.deployconfig.main.Main</mainClass> <addClasspath>true</addClasspath> <!--是否配置Class-Path--> <classpathPrefix>lib/</classpathPrefix> <!--依赖路径Class-Path--> </manifest> <manifestEntries> <Class-Path>.</Class-Path> <!--依赖在jar包的当前目录 Class-Path--> </manifestEntries> </archive> </configuration> </plugin>
- 拷贝XML配置文件:
- <plugin>
- <artifactId>maven-resources-plugin</artifactId>
- <executions>
- <execution>
- <id>copy-resources</id>
- <phase>package</phase>
- <goals>
- <goal>copy-resources</goal>
- </goals>
- <configuration>
- <outputDirectory>target</outputDirectory>
- <resources>
- <resource>
- <directory>src/main/resources</directory>
- <filtering>true</filtering>
- </resource>
- </resources>
- </configuration>
- </execution>
- </executions>
- </plugin>
- 拷贝所有的Dependency JARs:
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-dependency-plugin</artifactId>
- <executions>
- <execution>
- <id>copy-dependencies</id>
- <phase>package</phase>
- <goals>
- <goal>copy-dependencies</goal>
- </goals>
- <configuration>
- <outputDirectory>target/libs</outputDirectory>
- <overWriteReleases>false</overWriteReleases>
- <overWriteSnapshots>false</overWriteSnapshots>
- <overWriteIfNewer>true</overWriteIfNewer>
- </configuration>
- </execution>
- </executions>
- </plugin>
- 生成运行文件:
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-antrun-plugin</artifactId>
- <executions>
- <execution>
- <id>manifest</id>
- <phase>package</phase>
- <goals>
- <goal>run</goal>
- </goals>
- <configuration>
- <tasks>
- <echo file="target/runjetty.sh">
- java -cp "libs/*:jettysetup-1.0-SNAPSHOT.jar" weblog.examples.jettysetup.JettyLauncher
- </echo>
- </tasks>
- </configuration>
- </execution>
- </executions>
- </plugin>
通过上面的4个简单的配置, 我们可以实现对我们的项目进行打包, 同时拷贝配置文件, 和Dependency JAR文件, 生成执行脚本, 这个打包有几个优势:
- 打包文件不包含配置文件, 这样我们可以很方便得对配置文件进行修改
- 打包文件不包含Dependency JARs, 由于这些JAR并没有打包在我们的project jar文件里, 当我们有多个项目打包文件的时候, 这些JAR将会被共享.