Maven 2 如果我已经在repo中安装了这个版本,如何跳过Maven构建中的安装阶段

Maven 2 如果我已经在repo中安装了这个版本,如何跳过Maven构建中的安装阶段,maven-2,installation,phase,Maven 2,Installation,Phase,我有一个由3个不同的库组成的项目。当我运行安装脚本时,它从repo获取所有库,并在它们上运行mvn clean install。但是这个版本的库已经安装在repo中了。如果pom.xml中的版本与本地repo中的版本相同,是否有方法跳过安装阶段 我知道我可以使用本地回购,只需设置依赖项。但我的老板希望我们的项目只能通过公共回购协议进行建设,而不需要我们的任何回购协议 我知道我可以使用本地回购,只需设置依赖项。但我的老板希望我们的项目只能通过公共回购协议进行建设,而不需要我们的任何回购协议 你确定

我有一个由3个不同的库组成的项目。当我运行安装脚本时,它从repo获取所有库,并在它们上运行mvn clean install。但是这个版本的库已经安装在repo中了。如果pom.xml中的版本与本地repo中的版本相同,是否有方法跳过安装阶段

我知道我可以使用本地回购,只需设置依赖项。但我的老板希望我们的项目只能通过公共回购协议进行建设,而不需要我们的任何回购协议

我知道我可以使用本地回购,只需设置依赖项。但我的老板希望我们的项目只能通过公共回购协议进行建设,而不需要我们的任何回购协议

你确定你正确理解了你老板的意思吗?我将上述解释为“不要在本地存储库中安装第三方库,只使用公共存储库中可用的库”。这与“不使用本地存储库”不同,后者基本上是不可能的,这不是maven的工作方式。我想澄清这一点


除此之外,我不明白一个非常令人困惑的问题(你说的是什么repo?安装脚本在做什么?为什么称为库上的干净安装?等等)

大多数maven插件可以通过指定以下内容来跳过:

        <plugin>
          <artifactId>maven-install-plugin</artifactId>
          <version>X.Y</version>
          <configuration>
            <skip>true</skip>
          </configuration>
        </plugin>

maven安装插件
X.Y
真的
还可以设置生成配置文件以设置属性,并使用该属性确定值。例如,运行命令:mvn-Pexample将选择“example”概要文件。POM将包含:

...
  <properties>
    <skip.install>false</skip.install>
...
  </properties>

...
    <profile>
      <id>example</id>
      <properties>
        <skip.install>false</skip.install>
      </properties>
    </profile>
...
    <plugin>
      <artifactId>maven-install-plugin</artifactId>
      <version>X.Y</version>
      <configuration>
        <skip>${skip.install}</skip>
      </configuration>
    </plugin>
...
。。。
假的
...
...
例子
假的
...
maven安装插件
X.Y
${skip.install}
...

使用这些POM添加,安装插件的默认行为将是执行其默认目标,但如果选择了示例配置文件,则安装插件将跳过其目标。

您可以这样绕过

-Dmaven.install.skip=true


滑雪场

根据我从其他答案中学到的知识,这对我来说是最干净的结果

在我的超级pom中,我添加了一个pluginManagement/plugin,在设置属性
deployOnly
时禁用默认安装和默认测试阶段

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-install-plugin</artifactId>
                <version>2.5.2</version>
                <executions>
                    <execution>
                        <id>default-install</id>
                        <configuration>
                            <skip>${deployOnly}</skip>
                        </configuration>
                    </execution>
                    <execution>
                        <id>default-test</id>
                        <configuration>
                            <skip>${deployOnly}</skip>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

从未来扩展其他答案

Maven插件有着惊人的高自由度,它们是如何运行的。如果需要,可以忽略/覆盖典型的pom.xml设置。此外,
true
也只是一种约定,没有什么规定插件必须遵循它,除非大多数插件都是这样开发的

我对最近的问题进行的实验表明,@Cemo's和@MiloshBoroyevich解决方案都应该被利用,插件也需要这两种方法才能真正让我们平静下来。更具体地说,我唯一的工作配置是:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-install-plugin</artifactId>
    <version>2.5.2</version>
    <executions>
        <execution>
            <id>default-install</id>
            <phase>none</phase>
        </execution>
    </executions>
    <configuration>
        <skip>true</skip>
    </configuration>
</plugin>

org.apache.maven.plugins
maven安装插件
2.5.2
默认安装
没有一个
真的

这是最好的解决方案。但并非所有插件都有“跳过”。安装插件是否有跳过配置?
maven安装插件
没有
skip
配置参数。提供的解决方案基本上不起作用。@MichalKalinowski从2.4版开始就起作用了,请参见Olivier Lamy patched(奥利维尔·拉米修补版)
https://jira.codehaus.org/browse/MINSTALL-73
另请参见此解决方案不适用于我。我还注意到maven settings.xml文件中有一个警告,表示元素“无法识别”。我将在答复中提出我的解决办法。
mvn clean install       #build and test everything
mvn deploy -DdeployOnly #just deploy it
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-install-plugin</artifactId>
    <version>2.5.2</version>
    <executions>
        <execution>
            <id>default-install</id>
            <phase>none</phase>
        </execution>
    </executions>
    <configuration>
        <skip>true</skip>
    </configuration>
</plugin>