2

以下是我的 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 的一部分吗?

4

1 回答 1

0

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

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

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

当我遇到这个问题时,我选择向着色工件添加一个分类器,如着色插件文档中所示

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

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

于 2017-12-12T14:30:14.687 回答