Maven 2 如果我已经在repo中安装了这个版本,如何跳过Maven构建中的安装阶段
我有一个由3个不同的库组成的项目。当我运行安装脚本时,它从repo获取所有库,并在它们上运行mvn clean install。但是这个版本的库已经安装在repo中了。如果pom.xml中的版本与本地repo中的版本相同,是否有方法跳过安装阶段 我知道我可以使用本地回购,只需设置依赖项。但我的老板希望我们的项目只能通过公共回购协议进行建设,而不需要我们的任何回购协议 我知道我可以使用本地回购,只需设置依赖项。但我的老板希望我们的项目只能通过公共回购协议进行建设,而不需要我们的任何回购协议 你确定你正确理解了你老板的意思吗?我将上述解释为“不要在本地存储库中安装第三方库,只使用公共存储库中可用的库”。这与“不使用本地存储库”不同,后者基本上是不可能的,这不是maven的工作方式。我想澄清这一点Maven 2 如果我已经在repo中安装了这个版本,如何跳过Maven构建中的安装阶段,maven-2,installation,phase,Maven 2,Installation,Phase,我有一个由3个不同的库组成的项目。当我运行安装脚本时,它从repo获取所有库,并在它们上运行mvn clean install。但是这个版本的库已经安装在repo中了。如果pom.xml中的版本与本地repo中的版本相同,是否有方法跳过安装阶段 我知道我可以使用本地回购,只需设置依赖项。但我的老板希望我们的项目只能通过公共回购协议进行建设,而不需要我们的任何回购协议 我知道我可以使用本地回购,只需设置依赖项。但我的老板希望我们的项目只能通过公共回购协议进行建设,而不需要我们的任何回购协议 你确定
除此之外,我不明白一个非常令人困惑的问题(你说的是什么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>