我有多模块项目,这是父pom。
<?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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.atoms</groupId>
<artifactId>atoms-parent</artifactId>
<packaging>pom</packaging>
<version>1.0</version>
<url/>
<modules>
<module>atoms-persistence</module>
<module>atoms-reglas</module>
<module>atoms-webservice</module>
</modules>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.5</source>
<target>1.5</target>
</configuration>
</plugin>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<descriptors>
<descriptor>assemble.xml</descriptor>
</descriptors>
</configuration>
</plugin>
</plugins>
</build>
</project>
在项目atoms-persitence中,我有以下文件:
com.atoms.vo。*
com.atoms.service。*
com.atoms.dao。*
在原子 - reglas中我有:
com.atoms.rules。*
如何使用程序集插件创建一个只包含以下类的jar:
com.atoms.vo。*和com.atoms.rules。*?
答案 0 :(得分:5)
尝试以下几点:
<assembly>
<id>atoms</id>
<formats>
<format>jar</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<fileSets>
<fileSet>
<directory>${basedir}/target/classes
</directory>
<outputDirectory>/</outputDirectory>
<includes>
<include>com/atoms/vo.**</include>
<include>com/atoms/rules/**</include>
</includes>
</fileSet>
</fileSets>
</assembly>
答案 1 :(得分:0)
首先,明确指定您要在pom.xml
(includes
/ excludes
中使用大于或等于2.2-beta-3的maven程序集插件版本稍后您需要的unpackOptions
元素在2.2-beta-3之前的版本中的行为不符合预期。我在这里使用2.2-beta-4版本:
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.2-beta-4</version>
<configuration>
<descriptors>
<descriptor>assemble.xml</descriptor>
</descriptors>
</configuration>
</plugin>
然后,使用您选择的模块声明moduleSets
并指定您要使用includes
中的assembly.xml
解压缩其二进制内容:
<assembly>
<id>my-assembly</id>
<formats>
<format>jar</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<moduleSets>
<moduleSet>
<includes>
<include>com.atoms:atoms-persistence</include>
<include>com.atoms:atoms-reglas</include>
</includes>
<binaries>
<outputDirectory>/</outputDirectory>
<unpack>true</unpack>
<unpackOptions>
<includes>
<include>com/atoms/vo/**</include>
<include>com/atoms/rules/**</include>
</includes>
</unpackOptions>
</binaries>
</moduleSet>
</moduleSets>
</assembly>
最后,从父项目运行以下命令:
mvn clean package assembly:assembly
这会构建一个仅包含所需类的target/atoms-parent-1.0-my-assembly.jar
。