可以maven组装插件挑选指定java包吗?

时间:2011-11-21 08:36:18

标签: maven maven-assembly-plugin

假设我们的项目中有以下包

  

org.xxx.dao,org.xxx.service,org.xxx.service.impl

所有包都在源文件夹src / main / java

  

我可以将软件包汇编到分离的jar中,(xxx-dao.jar,xxx-service.jar,xxx-service-impl.jar)?

2 个答案:

答案 0 :(得分:5)

您可以使用标准maven-jar-plugin

<plugin>
    <artifactId>maven-jar-plugin</artifactId>
    <executions>
        <execution>
            <id>dao</id>
            <phase>package</phase>
            <goals>
                <goal>jar</goal>
            </goals>
            <configuration>
                <archive>
                    <index>true</index>
                    <manifest>
                        <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
                    </manifest>
                </archive>

                <classifier>dao</classifier>
                <includes>
                    <include>org/xxx/dao/**/*</include>
                </includes>
            </configuration>
        </execution>

        <execution>
            <id>service</id>
            <phase>package</phase>
            <goals>
                <goal>jar</goal>
            </goals>
            <configuration>
                <archive>
                    <index>true</index>
                    <manifest>
                        <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
                    </manifest>
                </archive>

                <classifier>service</classifier>
                <includes>
                    <include>org/xxx/service/**/*</include>
                </includes>
            </configuration>
        </execution>
    </executions>
</plugin>

这为您提供了一个包含所有内容的JAR,然后是几个只包含您可以在Maven POM中使用分类器选择的内容的JAR。

如果要省略默认JAR(包含所有内容),则将<id>替换为<id>default-jar</id>并添加<excludes>元素,因为默认JAR包含所有内容,因此您必须摆脱任何你不想要的东西。

答案 1 :(得分:1)

maven-assembly插件不适用于此类任务,请参阅its features。如果您有源代码,那么我建议将它们复制到项目的模块中。

但是如果你想用maven-assembly插件做,那么我认为你可以通过创建单独的descriptor components并定义要包含在哪个程序集中的文件来实现。您可以定义要包含在sources定义下的includes标记中的源文件。