Maven依赖插件不会重新构建依赖项。

huangapple go评论76阅读模式
英文:

Maven dependency plugin does not rebuild dependencies

问题

我有一个多模块项目,结构如下:

my-project
 - moduleA
 - moduleB
 - moduleC

moduleA 的 pom.xml 配置如下:

<profiles>
    <profile>
        <id>withArtifacts</id>
        <build>
            <plugins>
                <plugin>
                    <artifactId>maven-dependency-plugin</artifactId>

                    <dependencies>
                        <dependency>
                            <groupId>com.ekiryuhin</groupId>
                            <artifactId>moduleB</artifactId>
                            <version>${project.version}</version>
                        </dependency>

                        <dependency>
                            <groupId>com.ekiryuhin</groupId>
                            <artifactId>moduleC</artifactId>
                            <version>${project.version}</version>
                        </dependency>
                    </dependencies>

                    <executions>
                        <execution>
                            <phase>install</phase>
                            <goals>
                                <goal>copy-dependencies</goal>
                            </goals>
                            <configuration>
                                <includeArtifactIds>
                                    moduleB,moduleC
                                </includeArtifactIds>
                                <outputDirectory>
                                    ${project.build.directory}/lib
                                </outputDirectory>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>
    </profile>
</profiles>

然后:

  1. moduleBmoduleC 内的类中添加一些代码。
  2. 使用 cd 命令切换到 my-project/moduleA 目录。
  3. 运行 mvn clean install -PwithArtifacts -DskipTests -am

最终,我在 ${project.build.directory}/lib 目录中有一些 JAR 文件,但它们不包含我在步骤(1)中的编辑内容。

为什么 Maven 在复制之前可能不会重新构建依赖项?

更新:

moduleB 的 pom.xml 如下:

英文:

I have multi-module project with structure like:

my-project
 - moduleA
 - moduleB
 - moduleC

pom.xml for moduleA configured like:

&lt;profiles&gt;
    &lt;profile&gt;
        &lt;id&gt;withArtifacts&lt;/id&gt;
        &lt;build&gt;
            &lt;plugins&gt;
                &lt;plugin&gt;
                    &lt;artifactId&gt;maven-dependency-plugin&lt;/artifactId&gt;

                    &lt;dependencies&gt;
                        &lt;dependency&gt;
                            &lt;groupId&gt;com.ekiryuhin&lt;/groupId&gt;
                            &lt;artifactId&gt;moduleB&lt;/artifactId&gt;
                            &lt;version&gt;${project.version}&lt;/version&gt;
                        &lt;/dependency&gt;

                        &lt;dependency&gt;
                            &lt;groupId&gt;com.ekiryuhin&lt;/groupId&gt;
                            &lt;artifactId&gt;moduleC&lt;/artifactId&gt;
                            &lt;version&gt;${project.version}&lt;/version&gt;
                        &lt;/dependency&gt;
                    &lt;/dependencies&gt;

                    &lt;executions&gt;
                        &lt;execution&gt;
                            &lt;phase&gt;install&lt;/phase&gt;
                            &lt;goals&gt;
                                &lt;goal&gt;copy-dependencies&lt;/goal&gt;
                            &lt;/goals&gt;
                            &lt;configuration&gt;
                                &lt;includeArtifactIds&gt;
                                    moduleB,moduleC
                                &lt;/includeArtifactIds&gt;
                                &lt;outputDirectory&gt;
                                    ${project.build.directory}/lib
                                &lt;/outputDirectory&gt;
                            &lt;/configuration&gt;
                        &lt;/execution&gt;
                    &lt;/executions&gt;
                &lt;/plugin&gt;
            &lt;/plugins&gt;
        &lt;/build&gt;
    &lt;/profile&gt;
&lt;/profiles&gt;

Then:

  1. Add some code in classes inside moduleB and moduleC.
  2. cd to my-project/moduleA.
  3. Run mvn clean install -PwithArtifacts -DskipTests -am

And finally I have jar files in ${project.build.directory}/lib but they do not contain my edits from (1).

Why maven may do not rebuild dependencies before copy?

UPD:

pom.xml from moduleB:

答案1

得分: 1

你需要为此构建 所有 模块。转到主项目 my-project 并调用 mvn clean install。您还需要确保 moduleA 依赖于 moduleB 和 moduleC,以确保构建顺序正确。

英文:

You need build all the modules for that. Go the main project my-project and call mvn clean install. You also need to make sure that moduleA depends on moduleB and moduleC so that the build order will be correct.

huangapple
  • 本文由 发表于 2020年3月15日 21:07:35
  • 转载请务必保留本文链接:https://go.coder-hub.com/60693208.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定