Maven构建web项目常用配置

来源:互联网 发布:淘宝网店客服怎么做 编辑:程序博客网 时间:2024/04/18 19:34

使用Maven来构建应用程序,可以非常方便地管理应用相关的资源。众所周知,应用程序中涉及到的一些依赖关系,如Java应用程序依赖jar文件,如果只是手动找到相应的资源,可能需要花费一些时间。而且,即使已经积累了库文件,在未来应用程序升级以后,还要考虑到依赖库文件的升级情况,再次搜索收集。
还有一个问题,对应用程序依赖文件的管理是个非常复杂工作,占用存储空间不说,还可能因为应用之间的版本问题导致依赖冲突。使用Maven的pom模型来构建应用程序,可以更加有效地的管理,而且配置内容非常清晰(有时多了,可能pom文件显得有点臃肿)。
下面将常用的Maven配置,整理如下,以备参考。首先,整理一个简单的目录,作为快速查询之用:

设置字符集
拷贝src/main/resources/资源文件
编译代码
、编译打包成jar文件
构建测试用例配置
输出依赖jar文件到指定目录
配置指定的repository
将应用及其依赖jar文件打成一个jar文件
具体配置的详细内容,如下所示:

1、设置字符集

[html] view plaincopyprint?在CODE上查看代码片派生到我的代码片
  1. <properties>  
  2.     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>  
  3. </properties>  
在需要设置字符集的地方,引用${project.build.sourceEncoding}即可。

2、拷贝src/main/resources/资源文件

[html] view plaincopyprint?在CODE上查看代码片派生到我的代码片
  1. <build>  
  2.     <pluginManagement>  
  3.         <plugins>  
  4.             <plugin>  
  5.                 <groupId>org.apache.maven.plugins</groupId>  
  6.                 <artifactId>maven-resources-plugin</artifactId>  
  7.                 <version>2.5</version>  
  8.                 <executions>  
  9.                     <execution>  
  10.                         <id>copy-resources</id>  
  11.                         <phase>package</phase>  
  12.                         <goals>  
  13.                             <goal>copy-resources</goal>  
  14.                         </goals>  
  15.                         <configuration>  
  16.                             <encoding>${project.build.sourceEncoding}</encoding>  
  17.                             <outputDirectory>${project.build.directory}</outputDirectory>  
  18.                             <resources>  
  19.                                 <resource>  
  20.                                     <directory>src/main/resources/</directory>  
  21.                                     <includes>  
  22.                                         <include>*.properties</include>  
  23.                                         <include>*.xml</include>  
  24.                                     </includes>  
  25.                                     <filtering>true</filtering>  
  26.                                 </resource>  
  27.                             </resources>  
  28.                         </configuration>  
  29.                     </execution>  
  30.                 </executions>  
  31.             </plugin>  
  32.         </plugins>  
  33.     </pluginManagement>  
  34. </build>  

3、编译代码

[html] view plaincopyprint?在CODE上查看代码片派生到我的代码片
  1. <build>  
  2.     <pluginManagement>  
  3.         <plugins>  
  4.             <plugin>  
  5.                 <groupId>org.apache.maven.plugins</groupId>  
  6.                 <artifactId>maven-compiler-plugin</artifactId>  
  7.                 <version>2.5</version>  
  8.                 <configuration>  
  9.                     <source>1.7</source>  
  10.                     <target>1.7</target>  
  11.                 </configuration>  
  12.             </plugin>  
  13.         </plugins>  
  14.     </pluginManagement>  
  15. </build>  

可以指定源代码编译级别。

4、编译打包成jar文件

[html] view plaincopyprint?在CODE上查看代码片派生到我的代码片
  1. <build>  
  2.     <pluginManagement>  
  3.         <plugins>  
  4.             <plugin>  
  5.                 <groupId>org.apache.maven.plugins</groupId>  
  6.                 <artifactId>maven-jar-plugin</artifactId>  
  7.                 <executions>  
  8.                     <execution>  
  9.                         <phase>package</phase>  
  10.                         <goals>  
  11.                             <goal>jar</goal>  
  12.                         </goals>  
  13.                         <configuration>  
  14.                             <classifier>without-configs</classifier>  
  15.                             <excludes>  
  16.                                 <exclude>*.properties</exclude>  
  17.                                 <exclude>*.xml</exclude>  
  18.                             </excludes>  
  19.                         </configuration>  
  20.                     </execution>  
  21.                 </executions>  
  22.             </plugin>  
  23.     </pluginManagement>  
  24. </build>  
可以指定打包后jar文件的文件名后缀,同时可以设置是否将配置文件也打包到jar文件中。

5、构建测试用例配置
[html] view plaincopyprint?在CODE上查看代码片派生到我的代码片
  1. <build>  
  2.     <pluginManagement>  
  3.         <plugins>  
  4.             <plugin>  
  5.                 <groupId>org.apache.maven.plugins</groupId>  
  6.                 <artifactId>maven-surefire-plugin</artifactId>  
  7.                 <version>2.9</version>  
  8.                 <configuration>  
  9.                     <skip>true</skip>  
  10.                     <testFailureIgnore>true</testFailureIgnore>  
  11.                 </configuration>  
  12.             </plugin>  
  13.         </plugins>  
  14.     </pluginManagement>  
  15. </build>  

构建应用时,可以配置是否执行测试用例代码,也可以配置如果测试用例未通过是否忽略。

6、输出依赖jar文件到指定目录

[html] view plaincopyprint?在CODE上查看代码片派生到我的代码片
  1. <build>  
  2.     <pluginManagement>  
  3.         <plugins>  
  4.             <plugin>  
  5.                 <groupId>org.eclipse.m2e</groupId>  
  6.                 <artifactId>lifecycle-mapping</artifactId>  
  7.                 <version>1.0.0</version>  
  8.                 <configuration>  
  9.                     <lifecycleMappingMetadata>  
  10.                         <pluginExecutions>  
  11.                             <pluginExecution>  
  12.                                 <pluginExecutionFilter>  
  13.                                     <groupId>org.apache.maven.plugins</groupId>  
  14.                                     <artifactId>maven-dependency-plugin</artifactId>  
  15.                                     <versionRange>[2.0,)</versionRange>  
  16.                                     <goals>  
  17.                                         <goal>copy-dependencies</goal>  
  18.                                         <goal>unpack</goal>  
  19.                                     </goals>  
  20.                                 </pluginExecutionFilter>  
  21.                                 <action>  
  22.                                     <ignore />  
  23.                                 </action>  
  24.                             </pluginExecution>  
  25.                         </pluginExecutions>  
  26.                     </lifecycleMappingMetadata>  
  27.                 </configuration>  
  28.             </plugin>  
  29.         </plugins>  
  30.     </pluginManagement>  
  31.     <plugins>  
  32.         <plugin>  
  33.             <groupId>org.apache.maven.plugins</groupId>  
  34.             <artifactId>maven-dependency-plugin</artifactId>  
  35.             <version>2.8</version>  
  36.             <executions>  
  37.                 <execution>  
  38.                     <id>copy-dependencies</id>  
  39.                     <phase>package</phase>  
  40.                     <goals>  
  41.                         <goal>copy-dependencies</goal>  
  42.                     </goals>  
  43.                     <configuration>  
  44.                         <outputDirectory>${project.build.directory}/lib</outputDirectory>  
  45.                         <overWriteReleases>false</overWriteReleases>  
  46.                         <overWriteSnapshots>false</overWriteSnapshots>  
  47.                         <overWriteIfNewer>true</overWriteIfNewer>  
  48.                     </configuration>  
  49.                 </execution>  
  50.             </executions>  
  51.         </plugin>  
  52.     </plugins>  
  53. </build>  

上面,和pluginManagement并列的plugins元素中配置的是拷贝依赖jar文件到target/lib目录下面,如果在Eclipse中出现maven-dependency-plugin (goals “copy-dependencies”, “unpack”) is not supported by m2e错误,上面pluginManagement元素中的配置,可以解决这个错误提示。

7、配置指定的repository

[html] view plaincopyprint?在CODE上查看代码片派生到我的代码片
  1. <repositories>  
  2.     <repository>  
  3.         <id>cloudera</id>  
  4.         <url>https://repository.cloudera.com/artifactory/cloudera-repos/</url>  
  5.     </repository>  
  6. </repositories>  
如果我们需要要的一些依赖jar文件在maven中央repository中没有,可以在pom文件中配置特定的repository,一般需要配置id和url。

8、将应用及其依赖jar文件打成一个jar文件
[html] view plaincopyprint?在CODE上查看代码片派生到我的代码片
  1. <build>  
  2.     <plugins>  
  3.         <plugin>  
  4.             <artifactId>maven-assembly-plugin</artifactId>  
  5.             <configuration>  
  6.                 <archive>  
  7.                     <manifest>  
  8.                         <mainClass>org.shirdrn.solr.cloud.index.hadoop.SolrCloudIndexer</mainClass>  
  9.                     </manifest>  
  10.                 </archive>  
  11.                 <descriptorRefs>  
  12.                     <descriptorRef>jar-with-dependencies</descriptorRef>  
  13.                 </descriptorRefs>  
  14.             </configuration>  
  15.             <executions>  
  16.                 <execution>  
  17.                     <id>make-assembly</id>  
  18.                     <phase>package</phase>  
  19.                     <goals>  
  20.                         <goal>single</goal>  
  21.                     </goals>  
  22.                 </execution>  
  23.             </executions>  
  24.         </plugin>  
  25.     </plugins>  
  26. </build>  

转载至:http://blog.csdn.net/u013510614/article/details/50503602

0 0
原创粉丝点击