gpt4 book ai didi

java - 'mvn clean' 与 .'mvn clean install' (当插件执行附加到 'clean' 时)

转载 作者:行者123 更新时间:2023-12-02 01:45:42 27 4
gpt4 key购买 nike

假设我想在编译项目之前将项目本地依赖项(jar 文件)安装到本地 Maven 存储库 (~/.m2),这样我就可以在 POM 中引用它们,就像引用 Maven 中的任何依赖项一样中央。目前,我正在使用 Maven 安装插件的安装文件目标附加到“clean”阶段(因为我的 IDE 使用它),如下所示:

<dependencies>
<dependency>
<groupId>group.id</groupId>
<artifactId>artifact.id</artifactId>
<version>artifact.version</version>
</dependency>
</dependencies>

<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-install-plugin</artifactId>
<version>2.5.2</version>
<executions>
<execution>
<id>install-my-local-dependency</id>
<phase>clean</phase>
<goals>
<goal>install-file</goal>
</goals>
<configuration>
<groupId>group.id</groupId>
<artifactId>artifact.id</artifactId>
<version>artifact.version</version>
<file>${project.basedir}/lib/local-dep.jar</file>
<packaging>jar</packaging>
<generatePom>true</generatePom>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>

当我执行 mvn clean (或 IDE 中的等效命令)时,一切都会按我的预期运行:

--- maven-clean-plugin:2.5:clean (default-clean) @ MyProject ---

--- maven-install-plugin:2.5.2:install-file (install-...) @ MyProject --- Installing ${project.basedir}/lib/local-dep.jar to ~/.m2/repository/group.id/artifact.id/local-dep.jar

但是当我执行 mvn clean install (或 IDE 中的等效项)时,我收到以下错误:

Failed to execute goal on project MyProject: Could not resolve dependencies for project com.example.MyProject:jar:1.0: Could not find artifact group.id:artifact.id:jar:artifact.version in central (https://repo.maven.apache.org/maven2) -> [Help 1]

由于某种原因,Maven 安装插件的安装文件目标在这种情况下要么不运行,要么运行得不够快。为什么?我发现的其他 StackOverflow 答案解释了这两个命令之间的差异,但在我看来,它们没有解释这种特殊差异,因为我的项目没有模块。

是否有更好的方法可以跨平台执行相同的操作,甚至在构建服务器(例如 Jenkins)上并且至少有一个其他依赖项目?

如果有什么帮助的话,我有以下 Maven 版本:

  • CLI:3.6.0
  • IDE:3.3.9

最佳答案

Maven 首先分析pom.xml,然后调用目标/阶段。分析本身很复杂,并且有不同的深度,所以我猜测单独调用 clean 不会让 Maven 分析依赖关系,但调用 clean install 可以。请注意,POM 的分析仅发生一次,而不是针对每个目标/阶段再次进行。

一般来说,不推荐您的方法。通常,您将项目依赖项放入远程 Maven 存储库中,以便可以通过它们来解决它们。如果您在公司内部工作,您应该设置一个 Nexus/Artifactory 服务器来处理您的 Artifact 。

如果您希望公司外部的人员构建该 Artifact ,您需要找到 Maven 存储库的提供商。我想 github/gitlab 可以帮助你。然后您需要将这些存储库添加到 POM。

关于java - 'mvn clean' 与 .'mvn clean install' (当插件执行附加到 'clean' 时),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57458885/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com