一、多模块打包
?
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <parent> <artifactId>whatsmars-parent</artifactId> <groupId>com.itlong</groupId> <version>1.0-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>earth</artifactId> <packaging>jar</packaging> <name>${project.artifactId}</name> <description>The all in one project of whatsmars-earth</description> <properties> <skip_maven_deploy>false</skip_maven_deploy> </properties> <dependencies> <dependency> <groupId>com.itlong</groupId> <artifactId>whatsmars-common</artifactId> <version>${project.parent.version}</version> </dependency> <dependency> <groupId>com.itlong</groupId> <artifactId>whatsmars-earth-domain</artifactId> <version>${project.parent.version}</version> </dependency> <dependency> <groupId>com.itlong</groupId> <artifactId>whatsmars-earth-dao</artifactId> <version>${project.parent.version}</version> </dependency> <dependency> <groupId>com.itlong</groupId> <artifactId>whatsmars-earth-service</artifactId> <version>${project.parent.version}</version> </dependency> </dependencies> <build> <plugins> <plugin> <artifactId>maven-source-plugin</artifactId> <executions> <execution> <id>attach-sources</id> <phase>none</phase> </execution> </executions> </plugin> <plugin> <artifactId>maven-javadoc-plugin</artifactId> <executions> <execution> <id>attach-javadoc</id> <phase>deploy</phase> <goals> <goal>jar</goal> </goals> </execution> </executions> <configuration> <show>public</show> <charset>UTF-8</charset> <encoding>UTF-8</encoding> <docencoding>UTF-8</docencoding> <excludePackageNames>com.itlong.com.*</excludePackageNames> <links> <link>http://docs.oracle.com/javase/6/docs/api</link> </links> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>1.4</version> <executions> <execution> <phase>package</phase> <goals> <goal>shade</goal> </goals> <configuration> <createSourcesJar>false</createSourcesJar> <promoteTransitiveDependencies>true</promoteTransitiveDependencies> <artifactSet> <includes> <!-- 这里只是随便拿了几个模块来作为例子,实际上如下模块是不应该打包在一起的 --> <include>com.itlong:whatsmars-common</include> <include>com.itlong:whatsmars-earth-domain</include> <include>com.itlong:whatsmars-earth-dao</include> <include>com.itlong:whatsmars-earth-service</include> </includes> </artifactSet> <transformers> </transformers> </configuration> </execution> </executions> </plugin> </plugins> </build> </project>
?
?二、assembly
?
你是否想要创建一个包含脚本、配置文件以及所有运行时所依赖的元素(jar)Assembly插件能帮你构建一个完整的发布包。
Assembly插件会生成?“assemblies”,?此特性等同于的Maven 1 distribution plug-in.。该插件不仅支持创建二进制归档文件,也支持创建源码归档文件。这些assemblies定义在一个assembly描述符文件里。你可以选择自定义assembly描述符或者直接使用插件自带的三个预定义描述符中的任何一个.
目前Assembly插件支持如下格式的归档文件:
Maven 2上使用assembly的简单步骤:
如何自定义assembly描述符,详见Assembly Descriptor Format.
什么是Assembly?
“assembly”是把一组文件、目录、依赖元素组装成一个归档文件.?比如,?假设一个?Maven project定义了一个JAR artifact,它包含控制台应用程序和Swing应用程序?。这样一个工程可以定义两套包含描述符,一套给给控制台应用,另一套给Swing应用程序,它们包含各自的脚本、目录和依赖。
Assembly Plugin的描述符可以定义任何一个文件或者目录归档方式。举个例子,如果的你的Maven 2工程包含”src/main/bin”这个目录,你可以指示Assembly插件复制“src/main/bin”目录下所有的文件到bin目录里(归档文件里的目录),并且可以修改它们的权限属性(UNIX mode)。见?assembly descriptor.
The Maven Assembly Plugin
Maven 2.0的Assembly插件目的是提供一个把工程依赖元素、模块、网站文档等其他文件存放到单个归档文件里。
使用任何一个预定义的描述符你可以轻松的构建一个发布包。这些描述符能处理一些常用的操作,如:把依赖的元素的归档到一个jar文件.?当然,?你可以自定义描述符来更灵活的控制依赖,模块,文件的归档方式。
?
?
maven-assembly-plugin :?是maven中针对打包任务而提供的标准插件
(1)、在pom.xml 文件里面的配置说明
?
?
(2)、zip.xml 文件配置如下
?
?(3)、zip.xml 格式属性说明
?
打包的文件格式
可以有:tar.zip war zip
<formats>
?<format>zip</format>
</formats>
?
需要打包的路径
<directory>${project.basedir}</directory>
?
打包后输出的路径
<outputDirectory>/</outputDirectory>
?
打包需要包含的文件
?<excludes>
??????? <exclude>junit:junit</exclude>
??????? <exclude>commons-lang:commons-lang</exclude>
??????? <exclude>commons-logging:commons-logging</exclude>
</excludes>
?
当前项目构件是否包含在这个依赖集合里。
<useProjectArtifact>true</useProjectArtifact>
?
依赖包打包到目录下
<dependencySets>
??<dependencySet>
???<outputDirectory>lib</outputDirectory><!--?将scope为runtime的依赖包打包到lib目录下。?-->
???<useProjectArtifact>true</useProjectArtifact>
???<scope>runtime</scope>
??</dependencySet>
</dependencySets>
?
原文:http://wely.iteye.com/blog/2304825