Maven构建应用程序常用配置

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

  1. 设置字符集
  2. 拷贝src/main/resources/资源文件
  3. 编译代码
  4. 、编译打包成jar文件
  5. 构建测试用例配置
  6. 输出依赖jar文件到指定目录
  7. 配置指定的repository
  8. 将应用及其依赖jar文件打成一个jar文件

具体配置的详细内容,如下所示:

1、设置字符集

1 <properties>
2 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
3 </properties>

在需要设置字符集的地方,引用${project.build.sourceEncoding}即可。

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

01 <build>
02 <pluginManagement>
03 <plugins>
04 <plugin>
05 <groupId>org.apache.maven.plugins</groupId>
06 <artifactId>maven-resources-plugin</artifactId>
07 <version>2.5</version>
08 <executions>
09 <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、编译代码

01 <build>
02 <pluginManagement>
03 <plugins>
04 <plugin>
05 <groupId>org.apache.maven.plugins</groupId>
06 <artifactId>maven-compiler-plugin</artifactId>
07 <version>2.5</version>
08 <configuration>
09 <source>1.7</source>
10 <target>1.7</target>
11 </configuration>
12 </plugin>
13 </plugins>
14 </pluginManagement>
15 </build>

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

4、编译打包成jar文件

01 <build>
02 <pluginManagement>
03 <plugins>
04 <plugin>
05 <groupId>org.apache.maven.plugins</groupId>
06 <artifactId>maven-jar-plugin</artifactId>
07 <executions>
08 <execution>
09 <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、构建测试用例配置

01 <build>
02 <pluginManagement>
03 <plugins>
04 <plugin>
05 <groupId>org.apache.maven.plugins</groupId>
06 <artifactId>maven-surefire-plugin</artifactId>
07 <version>2.9</version>
08 <configuration>
09 <skip>true</skip>
10 <testFailureIgnore>true</testFailureIgnore>
11 </configuration>
12 </plugin>
13 </plugins>
14 </pluginManagement>
15 </build>

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

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

01 <build>
02 <pluginManagement>
03 <plugins>
04 <plugin>
05 <groupId>org.eclipse.m2e</groupId>
06 <artifactId>lifecycle-mapping</artifactId>
07 <version>1.0.0</version>
08 <configuration>
09 <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

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文件

查看源代码打印帮助

01 <build>
02 <plugins>
03 <plugin>
04 <artifactId>maven-assembly-plugin</artifactId>
05 <configuration>
06 <archive>
07 <manifest>
08 <mainClass>org.shirdrn.solr.cloud.index.hadoop.SolrCloudIndexer</mainClass>
09 </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>
时间: 2024-09-01 11:34:48

Maven构建应用程序常用配置的相关文章

《高性能Linux服务器构建实战》——1.5节Nginx常用配置实例

1.5 Nginx常用配置实例Nginx作为一个HTTP服务器,在功能实现方面和性能方面都表现得非常卓越,完全可以与Apache相媲美,几乎可以实现Apache的所有功能.下面就介绍一些Nginx常用的配置实例,具体包含虚拟主机配置.负载均衡配置.防盗链配置以及日志管理等. 1.5.1 虚拟主机配置实例下面在Nginx中创建3个虚拟主机,需要说明的是,这里仅仅列出了虚拟主机的配置部分. http { server { listen 80; server_name www.domain1.com;

使用Maven构建项目

Maven 是什么? Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具. Maven 除了以程序构建能力为特色之外,还提供高级项目管理工具.由于 Maven 的缺省构建规则有较高的可重用性,所以常常用两三行 Maven 构建脚本就可以构建简单的项目.由于 Maven 的面向项目的方法,许多 Apache Jakarta 项目发文时使用 Maven,而且公司项目采用 Maven 的比例在持续增长. 以上内容取自百度百科 安装Maven 由于ma

JAVA Eclipse使用Maven构建web项目详解(SSM框架)

tips: 启动项目后,welcome-file的链接即为测试用例 https://github.com/sheep0704/JAVA-SSM-Spring 部署maven web项目 Eclipse使用Maven构建web项目详解 pom.xml添加webapp依赖: <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId>

Struts2教程3:struts.xml常用配置解析

在本文中将详细讲述struts.xml文件的常用配置及注意事项. 1.使用<include>标签重用配置文件 在Struts2中提供了一个默认的struts.xml文件,但如果package.action.interceptors等配置比较多时,都放到一个struts.xml文件不太容易维护.因此,就需要将struts.xml文件分成多个配置文件,然后在struts.xml文件中使用<include>标签引用这些配置文件.这样做的优点如下: 结构更清晰,更容易维护配置信息. 配置文

maven 构建web项目时war名称由什么决定

使用maven 构建web项目时,war包的名称由什么决定呢? 默认的war名称是构件ID加上版本号,例如: shop_goods-0.0.1-SNAPSHOT.war或exam4-0.0.1-SNAPSHOT.war  有哪些方式可以指定war包的名称呢? 方式一: 使用插件maven-war-plugin,pom配置如下:  Xml代码   <plugin>                   <groupId>org.apache.maven.plugins</grou

Spring常用配置

----------------------------------------------------------------------------------------------[版权申明:本文系作者原创,转载请注明出处] 文章出处:http://blog.csdn.net/sdksdk0/article/details/52471101作者:朱培      ID:sdksdk0      邮箱: zhupei@tianfang1314.cn   -------------------

Eclipse maven构建springmvc项目

一.背景介绍 对于初学者,用maven构建项目并不是一件容易的事,springmvc并不是MVC中的主流,但是本人觉得springmvc比struts要好用,真正做到了零配置.一次使用,就放不下了. 二.准备工作 1.Eclipse 3.7 2.maven 3.Eclipse 需要安装maven插件.url:maven - http://download.eclipse.org/technology/m2e/releases .安装maven-3.0.4.并且选择本地的maven,如下图:  

Eclipse 使用 Maven 构建动态 Web 工程,默认无 java 目录的解决方法

Eclipse 使用 Maven 构建动态 Web 工程,默认无 java 目录的解决方法 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备.绿色教育的研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. 两年前,在病重的那些日子里,把有关 Mav

《Java和Android开发实战详解》——2.1节如何构建应用程序

2.1 如何构建应用程序 Java和Android开发实战详解 一般来说,我们使用Java程序语言的目的,就是编写程序代码构建应用程序,以期让计算机执行来解决问题. 2.1.1 如何编写程序代码 程序设计(Programming)很困难吗?事实上,如果你可以引导问路人到达目的地.走迷宫或开车到你家,一步一步详细列出活动流程,就表示你一定可以编写程序代码.不过,在列流程时请注意!计算机一点都不聪明,也不会举一反三,所以,我们需要告诉计算机详细的步骤和信息,不能只有模棱两可的内容. 例如,在北京开车