【问题标题】:How to Deploy only the sub-modules using maven deploy?如何使用 maven deploy 仅部署子模块?
【发布时间】:2011-11-18 18:47:43
【问题描述】:

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

ProjectA
 -  Submodule B
 - Submodlue C
 - Submodule D 

子模块打包成jar,部署到maven repo,怎么只能将子模块部署到maven仓库而不部署主项目?

【问题讨论】:

    标签: maven


    【解决方案1】:

    把它放在你不想部署的模块(或模块的 pom.xml)中:

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

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

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

    【讨论】:

    • 所有子模块中的skip属性将是true...所以根本不会部署任何东西......
    • @dokaspar 只需将要部署的所有子模块的 skip 属性设置为 false...
    【解决方案2】:

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

    【讨论】:

    • 您还需要使用 false 为要部署的每个子模块重新启用部署
    【解决方案3】:

    您可以使用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>
    

    【讨论】:

      【解决方案4】:

      另一个建议可能是:

      mvn deploy -pl SubModuleB
      

      【讨论】:

      • 这是一个非常简单易行的解决方案。
      【解决方案5】:

      这对我有用 将插件声明放在父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>
      

      【讨论】:

        【解决方案6】:

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

        【讨论】:

        • 嗨 Raghu ...无法使其工作...尝试将代码放入父 pm,但结果相同
        猜你喜欢
        • 2023-03-11
        • 1970-01-01
        • 1970-01-01
        • 2018-08-09
        • 1970-01-01
        • 2021-09-04
        • 2012-03-11
        • 1970-01-01
        • 2018-10-08
        相关资源
        最近更新 更多