使用带有maven shade插件的maven jar插件

时间:2015-06-05 17:28:51

标签: pom.xml maven-shade-plugin maven-jar-plugin

以下是我在多模块项目中的pom.xml中的结构

模块A pom.xml

<build>
    <plugins>

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
            <version>2.1</version>
            <configuration>
                <createDependencyReducedPom>true</createDependencyReducedPom>
                <filters>
                    <filter>
                        <artifact>*:*</artifact>
                        <excludes>
                            <exclude>META-INF/*.SF</exclude>
                            <exclude>META-INF/*.DSA</exclude>
                            <exclude>META-INF/*.RSA</exclude>
                        </excludes>
                    </filter>
                </filters>
            </configuration>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>shade</goal>
                    </goals>
                    <configuration>
                        <transformers>
                            <transformer
                                implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer" />
                            <transformer
                                implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                            </transformer>
                        </transformers>
                    </configuration>
                </execution>
            </executions>
        </plugin>

当我按照以下方式在构建阶段添加maven jar插件时

<plugin>
<artifactId>maven-jar-plugin</artifactId>
<extensions>false</extensions>
<inherited>true</inherited>
<configuration>
   <classifier>project-classifier</classifier>
</configuration>

这会出错:

无法创建着色的工件,项目主工件不存在。将这些plgins一起使用的正确方法是什么? jar插件应该是父pom的一部分吗?

1 个答案:

答案 0 :(得分:0)

shade插件需要一个非分类的工件。

如果从jar插件配置中删除分类器,您的错误应该消失:

<configuration>
    <classifier>project-classifier</classifier>
</configuration>

当我遇到这个问题时,我选择在着色工件中添加一个分类器,如shade plugin documentation

中所示
<shadedArtifactAttached>true</shadedArtifactAttached>
<shadedClassifierName>project-classifier</shadedClassifierName>

您的目标文件夹中将有一个基础的,未分类的jar工件,以及一个带阴影的分类jar。运行安装时,它将同时安装。我选择忽略它没有引起任何问题的基础工件。如果您想避免发布它,请调查安装插件配置。