【问题标题】:Using the maven jar plugin with maven shade plugin将 maven jar 插件与 maven shade 插件一起使用
【发布时间】:2015-08-20 18:05:54
【问题描述】:

以下是我的 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>

这给出了一个错误:

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

    当我遇到这个问题时,我选择将分类器添加到阴影工件中,如 shade plugin documentation 中所示

    <shadedArtifactAttached>true</shadedArtifactAttached>
    <shadedClassifierName>project-classifier</shadedClassifierName>
    

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

    【讨论】:

    • 我想补充一下,可能还有其他方法,我没有必要去探索。您可以在一个单独的项目中构建分类 jar,然后在执行着色的第二个项目中的 artifactSet 元素中引用它。 shade plugin artifactSet details
    猜你喜欢
    • 1970-01-01
    • 2013-11-25
    • 2012-06-13
    • 2014-03-07
    • 1970-01-01
    • 2021-11-24
    • 2014-07-23
    • 2015-02-05
    • 1970-01-01
    相关资源
    最近更新 更多