Maven 的 pom.xml 经常使用 变量 插件 配置 详解apache
1、变量 - 自定义变量及内置变量
1. 自定义变量
<properties> <project.build.name>tools</project.build.name> <project.build.sourceencoding>UTF-8</project.build.sourceencoding> </properties>
2. 内置变量
${basedir} 项目根目录 ${project.build.directory} 构建目录,缺省为target ${project.build.outputDirectory} 构建过程输出目录,缺省为target/classes ${project.build.finalName} 产出物名称,缺省为${project.artifactId}-${project.version} ${project.packaging} 打包类型,缺省为jar ${project.xxx} 当前pom文件的任意节点的内容
2、常见插件配置
1. 编译插件
<plugin> <groupid>org.apache.maven.plugins</groupid> <artifactid>maven-compiler-plugin</artifactid> <configuration> <source>1.6</source> <target>1.6</target> <encoding>${project.build.sourceEncoding}</encoding> </configuration> </plugin>
- source: 源代码编译版本
- target: 目标平台编译版本
- encoding: 字符集编码
2. 设置资源文件的编码方式
<plugin> <groupid>org.apache.maven.plugins</groupid> <artifactid>maven-resources-plugin</artifactid> <version>2.4.3</version> <executions> <execution> <phase>compile</phase> </execution> </executions> <configuration> <encoding>${project.build.sourceEncoding}</encoding> </configuration> </plugin>
xml、properties 文件都是资源文件,编码的时候遇到中文总要进行转码!用什么编码?UTF-8,那就记得强制 <encoding>${project.build.sourceEncoding}</encoding>
maven
3. 自动拷贝 jar 包到 target 目录
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <version>2.6</version> <executions> <execution> <id>copy-dependencies</id> <phase>compile</phase> <goals> <goal>copy-dependencies</goal> </goals> <configuration> <!-- ${project.build.directory}为Maven内置变量,缺省为target --> <outputDirectory>${project.build.directory}/lib</outputDirectory><!-- 表示是否不包含间接依赖的包 --> <excludeTransitive>false</excludeTransitive><!-- 表示复制的jar文件去掉版本信息 --> <stripVersion>true</stripVersion> </configuration> </execution> </executions> </plugin>
关于 maven-dependency-plugin:用得最多的几个操做: copy
, copy-dependencies
和它们对应的 unpack
, unpack-dependencies
ui
描述:copy 和 unpack 操做是由要拷某个包,这个包须要具体指定要拷哪一个包,与当前工程的依赖没有关系。这二者区别 - 是否解压编码
copy-dependencies
和 unpack-dependencies
,可是它是用来拷当前工程的依赖包的。这二者区别 - 是否解压spa
参考连接:http://liugang594.iteye.com/blog/2093082.net
4. 生成源代码 jar 包
<plugin> <artifactId>maven-source-plugin</artifactId> <version>2.1</version> <configuration> <!-- <finalName>${project.build.name}</finalName> --> <attach>true</attach> <encoding>${project.build.sourceEncoding}</encoding> </configuration> <executions> <execution> <phase>compile</phase> <goals> <goal>jar</goal> </goals> </execution> </executions> </plugin>
5. 将项目打成 jar 包
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>2.4</version> <configuration> <archive> <manifest> <!-- 告知 maven-jar-plugin添加一个 Class-Path元素到 MANIFEST.MF文件,以及在Class-Path元素中包括全部依赖项 --> <addClasspath>true</addClasspath><!-- 全部的依赖项应该位于 lib文件夹 --> <classpathPrefix>lib/</classpathPrefix><!-- 当用户使用 lib命令执行JAR文件时,使用该元素定义将要执行的类名 --> <mainClass>com.zhengtian.tools.service.phone.MobilePhoneTool</mainClass> </manifest> </archive> </configuration> </plugin>
在将项目打成 jar 包时,有时会须要将项目打成能够直接运行的 jar 包,所以就须要将项目依赖的 jar 包也打入 jar 包中,此时须要在 Eclipse 上安装例外一个插件,用来打可执行 jar 包,详情见连接 http://zheng12tian.iteye.com/blog/1765626 插件
更多 maven 配置详见:https://my.oschina.net/zh119893/blog/276090code
关于 maven-assembly-plugin 的使用orm
“assembly” 是把一组文件、目录、依赖元素组装成一个归档文件xml
参考连接:http://blog.csdn.net/WANGYAN9110/article/details/38646677
<plugin> <artifactId>maven-assembly-plugin</artifactId> <version>2.4.1</version> <executions> <execution> <id>make-zip</id><!-- 绑定到package生命周期阶段上 --> <phase>package</phase> <goals> <!-- 绑定到package生命周期阶段上 --> <goal>single</goal> </goals> <configuration> <descriptors> <!--描述文件路径--> <descriptor>src/assembly/assembly.xml</descriptor> </descriptors> </configuration> </execution> </executions> </plugin>
assembly.xml 配置
<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd"> <id>distribution</id> <formats> <format>zip</format> </formats> <fileSets> <fileSet> <directory>${project.basedir}\src\main\resources</directory> <outputDirectory>\</outputDirectory> </fileSet> <fileSet> <directory>${project.basedir}\src\bin</directory> <outputDirectory>\bin</outputDirectory> </fileSet> </fileSets> <dependencySets> <dependencySet> <useProjectArtifact>true</useProjectArtifact> <outputDirectory>lib</outputDirectory><!-- 将scope为runtime的依赖包打包到lib目录下。 --> <scope>runtime</scope> </dependencySet> </dependencySets> </assembly>