如何使用maven deploy仅部署子模块?

时间:2011-09-16 14:59:13

标签: maven

如何仅部署项目的子模块? 我有一个项目;

ProjectA
 -  Submodule B
 - Submodlue C
 - Submodule D 

子模块打包为jar并部署到maven repo.how只能将子模块部署到maven存储库而不是主项目吗?

6 个答案:

答案 0 :(得分:43)

将此信息放入您不想部署的模块(或模块的pom.xml)中:

<properties>
  <maven.deploy.skip>true</maven.deploy.skip>
</properties>

由于这是由子模块继承的,因此您必须将其放在您想要部署的子模块中:

<properties>
  <maven.deploy.skip>false</maven.deploy.skip>
</properties>

答案 1 :(得分:9)

这对我有用。与其他答案类似,但添加了缺少的插件元素。添加到父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>

答案 2 :(得分:7)

您可以使用technique described in my blog

在这种情况下,您将在根default-deploy中禁用pom.xml(或名称是什么):

<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>

答案 3 :(得分:2)

这对我有利 将插件声明放入父pom中,skip = true,但将herited = 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>

答案 4 :(得分:1)

您可以在模块的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>

答案 5 :(得分:0)

另一个建议可能是执行以下操作:

mvn deploy -pl SubModuleB