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>
目录
相关文章
|
5月前
|
Java 项目管理 Maven
Maven项目管理与构建自动化完全指南
Maven彻底改变了Java项目管理方式,通过POM模型、依赖管理和标准化构建流程,大幅提升开发效率。本文深入解析其核心概念、多模块管理、私服搭建及与Spring Boot、Docker等现代技术栈的集成实践,助力开发者实现高效、规范的项目构建与团队协作。
935 156
Maven项目管理与构建自动化完全指南
|
10月前
|
Java 应用服务中间件 Maven
在IntelliJ IDEA中如何配置使用Maven以创建Tomcat环境
所以,别担心这些工具看起来有些吓人,实际上这些都是为了帮助你更好的完成工作的工具,就像超市里的各种烹饪工具一样,尽管它们看起来可能很复杂,但只要你学会用,它们会为你烹饪出一道道美妙的食物。这就是学习新技能的乐趣,让我们一起享受这个过程,攀登知识的高峰!
675 27
|
10月前
|
Java 应用服务中间件 Apache
在IntelliJ IDEA中使用Maven配置Tomcat环境
此配置方法具有较高的实用性,简单易懂。遵循以上步骤,您将能顺利在IntelliJ IDEA中使用Maven配置Tomcat环境,从而进行Web项目的开发和调试。
1276 18
|
10月前
|
Java 测试技术 项目管理
【JavaEE】从 0 到 1 掌握 Maven 构建 Java 项目核心技巧 解锁 Java 项目高效管理实用实例
本文从Maven基础概念讲起,涵盖安装配置、核心概念(如POM与依赖管理)及优化技巧。结合Java Web项目实例,演示如何用Maven构建和管理项目,解决常见问题,助你高效掌握这一强大工具,提升Java开发与项目管理能力。适合初学者及进阶开发者学习。资源链接:[点此获取](https://pan.quark.cn/s/14fcf913bae6)。
340 6
|
XML Java 测试技术
从零开始学 Maven:简化 Java 项目的构建与管理
Maven 是一个由 Apache 软件基金会开发的项目管理和构建自动化工具。它主要用在 Java 项目中,但也可以用于其他类型的项目。
800 1
从零开始学 Maven:简化 Java 项目的构建与管理
|
存储 Java Linux
【Maven】——基础入门,插件安装、配置和简单使用,Maven如何设置国内源
Maven插件安装,Maven项目构建,依赖管理,Haven Help插件,Maven仓库,Maven如何设置国内源
|
Java Shell 应用服务中间件
Mac系统下配置环境变量:Javajdk、maven、tomcat 环境变量配置及对应配置文件
这篇文章介绍了如何在Mac系统下配置Java JDK、Maven和Tomcat的环境变量,包括配置文件的选择、解决环境变量在zsh shell中无效的问题、查看和设置系统环境变量的方法,以及JDK和Maven的下载、配置和测试步骤。
6376 1
Mac系统下配置环境变量:Javajdk、maven、tomcat 环境变量配置及对应配置文件
|
Java jenkins 持续交付
Centos7下docker的jenkins下载并配置jdk与maven
通过上述步骤,您将成功在CentOS 7上的Docker容器中部署了Jenkins,并配置好了JDK与Maven,为持续集成和自动化构建打下了坚实基础。
1156 1
|
Java Shell Maven
Flink-11 Flink Java 3分钟上手 打包Flink 提交任务至服务器执行 JobSubmit Maven打包Ja配置 maven-shade-plugin
Flink-11 Flink Java 3分钟上手 打包Flink 提交任务至服务器执行 JobSubmit Maven打包Ja配置 maven-shade-plugin
928 4
|
Java Maven
震惊!idea专业版如何配置maven国内源手把手教学
文章提供了如何在IDEA专业版中配置Maven使用国内源(如阿里云)的详细步骤,以加快依赖下载速度,并解释了配置国内源的原因。
4167 0
震惊!idea专业版如何配置maven国内源手把手教学