gpt4 book ai didi

maven-2 - mvn clean 没有依赖

转载 作者:行者123 更新时间:2023-12-04 14:05:27 26 4
gpt4 key购买 nike

我有一个第三方 jar,这是我们项目所必需的。它在中央 maven 存储库中不可用,因此我在构建期间使用 maven-install-plugin 在本地安装 jar。我将“安装文件”目标与“验证”阶段联系起来,这主要是可行的。 pom.xml 文件摘录如下:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
...
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-install-plugin</artifactId>
<version>2.3</version>
<executions>
<execution>
<id>install-myartifact</id>
<phase>validate</phase>
<goals>
<goal>install-file</goal>
</goals>
<configuration>
<file>${basedir}/lib/myartifact-1.2.3.jar</file>
<groupId>com.example</groupId>
<artifactId>myartifact</artifactId>
<version>1.2.3</version>
<packaging>jar</packaging>
<generatePom>true</generatePom>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>com.example</groupId>
<artifactId>myartifact</artifactId>
<version>1.2.3</version>
</dependency>
</dependencies>

但是,有一个问题。我们的大多数开发人员和我们的 Jenkins 安装运行“mvn clean install”。 “验证”阶段不是“清理”生命周期的一部分,清理莫名其妙地要求所有依赖项都存在才能运行。所以第一次有人运行这个构建时,它不起作用。
[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Building MyModule
[INFO] task-segment: [clean, install]
[INFO] ------------------------------------------------------------------------
[INFO] [clean:clean]
[INFO] Deleting directory C:\svn\trunk\mymodule\target
Downloading: http://nexusserver.local:8080/nexus/content/groups/public/com/example/myartifact-1.2.3.pom
[INFO] Unable to find resource 'com.example:myartifact:pom:1.2.3' in repository central (http://central)
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] Failed to resolve artifact.

Missing:
----------
1) com.example:myartifact:jar:1.2.3

Try downloading the file manually from the project website.

Then, install it using the command:
mvn install:install-file -DgroupId=com.example -DartifactId=myartifact -Dversion=1.2.3 -Dpackaging=jar -Dfile=/path/to/file

Alternatively, if you host your own repository you can deploy the file there:
mvn deploy:deploy-file -DgroupId=com.example -DartifactId=myartifact -Dversion=1.2.3 -Dpackaging=jar -Dfile=/path/to/file -Durl=[url] -DrepositoryId=[id]

Path to dependency:
1) com.example:mymodule:war:0.0.1-SNAPSHOT
2) com.example:myartifact:jar:1.2.3

----------
1 required artifact is missing.

for artifact:
com.example:mymodule:war:0.0.1-SNAPSHOT

from the specified remote repositories:
nexus (http://nexusserver.local:8080/nexus/content/groups/public)



[INFO] ------------------------------------------------------------------------
[INFO] For more information, run Maven with the -e switch
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1 second
[INFO] Finished at: Thu Jun 09 11:01:24 EDT 2011
[INFO] Final Memory: 17M/247M
[INFO] ------------------------------------------------------------------------

如果我只运行“mvn install”,jar 会在“验证”期间安装,我可以在后续构建中运行“mvn clean install”。但是,我们的构建服务器没有这种灵 active 。我考虑了以下几点:
  • 将阶段移至“预清洁”,但这假设每个人总是第一次使用清洁。如果有人简单地运行“mvn install”,这将无济于事。
  • 复制执行,其中一个发生在“预清理”期间,一个发生在“验证”期间。这涵盖了所有基础,但是复制的代码留下了不好的味道。

  • 理想情况下,我会喜欢其他选择。是否可以在没有依赖项的情况下运行干净?或者运行一个插件两次而不必完全复制执行?谢谢!

    最佳答案

    我遇到了一个相关的问题,我在谷歌搜索解决方案时发现了这个问题,所以我会在这里注明:

    如果在清理期间调用插件,当同一项目中缺少依赖项时,mvn clean 在多模块项目中失败。

    我们在某些模块的 clean 阶段调用 antrun-plugin,因此所有依赖项都需要存在于 maven 存储库中,包括同一 react 器中的其他模块,在某些情况下尚未构建(假设你只是提高了项目版本,或者您正在开始一个新项目)。

    这是 https://issues.apache.org/jira/browse/MANTRUN-78 中报告的 maven-antrun 错误。 - 这再次导致 maven 核心中的错误:https://issues.apache.org/jira/browse/MNG-3283 .

    我的解决方法是为开发人员(和 Jenkins)提供另一种执行清理的方法(shell/bat 脚本、ant 脚本或一些 git/hg 清理操作),并让他们调用它。

    我会为您的团队建议一个类似的解决方法(或者只是在您的团队内部设置一个共享的 Maven 存储库,如有必要,使用其中一台开发人员机器)。

    关于maven-2 - mvn clean 没有依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6295064/

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