【发布时间】:2011-11-18 18:47:43
【问题描述】:
如何只部署项目的子模块? 我有一个项目;
ProjectA
- Submodule B
- Submodlue C
- Submodule D
子模块打包成jar,部署到maven repo,怎么只能将子模块部署到maven仓库而不部署主项目?
【问题讨论】:
标签: maven
如何只部署项目的子模块? 我有一个项目;
ProjectA
- Submodule B
- Submodlue C
- Submodule D
子模块打包成jar,部署到maven repo,怎么只能将子模块部署到maven仓库而不部署主项目?
【问题讨论】:
标签: maven
把它放在你不想部署的模块(或模块的 pom.xml)中:
<properties>
<maven.deploy.skip>true</maven.deploy.skip>
</properties>
由于这是由子模块继承的,因此您必须将其放在您确实要部署的子模块中:
<properties>
<maven.deploy.skip>false</maven.deploy.skip>
</properties>
【讨论】:
true...所以根本不会部署任何东西......
false...
这对我有用。除了添加缺少的插件元素外,与其他答案类似。添加到父 POM。
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.4</version>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
</plugins>
</build>
【讨论】:
您可以使用technique described in my blog。
在这种情况下,您将在根 pom.xml 中禁用 default-deploy(或名称):
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<executions>
<execution>
<id>default-deploy</id>
<phase>none</phase>
</execution>
</executions>
</plugin>
然后为子模块启用它:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<executions>
<execution>
<id>default-deploy</id>
<phase>deploy</phase>
</execution>
</executions>
</plugin>
【讨论】:
另一个建议可能是:
mvn deploy -pl SubModuleB
【讨论】:
这对我有用 将插件声明放在父pom中,skip=true,但设置inherited=false。 这可以防止在每个子模块上重复。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.2</version>
<configuration>
<skip>true</skip>
</configuration>
<inherited>false</inherited>
</plugin>
【讨论】:
您可以在模块的 POM 中配置 maven-deploy-plugin 以将其从部署中排除:
<build>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.4</version>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
...
</build>
【讨论】: