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

Naz*_*zia 37 maven

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

ProjectA
 -  Submodule B
 - Submodlue C
 - Submodule D 
Run Code Online (Sandbox Code Playgroud)

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

小智 50

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

<properties>
  <maven.deploy.skip>true</maven.deploy.skip>
</properties>
Run Code Online (Sandbox Code Playgroud)

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

<properties>
  <maven.deploy.skip>false</maven.deploy.skip>
</properties>
Run Code Online (Sandbox Code Playgroud)

  • 所有子模块中的skip属性都是`true` ...所以什么都不会被部署.... (4认同)
  • @dokaspar 只需将要部署的所有子模块的 Skip 属性设置为“false”... (2认同)

dae*_*nio 19

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

mvn deploy -pl SubModuleB
Run Code Online (Sandbox Code Playgroud)

  • 这样父pom没有发布,导致引用该模块的项目构建时失败 (3认同)

ska*_*kay 11

这在我这边工作将插件声明放在父pom中,skip = true,但设置inherited = false。这可以防止在每个子模块上重复 <maven.deploy.skip>。

<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>
Run Code Online (Sandbox Code Playgroud)


Pau*_*ulT 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>
Run Code Online (Sandbox Code Playgroud)

  • 您还需要使用<skip> false </ skip>为要部署的每个子模块重新启用部署 (2认同)

Ond*_*žka 7

您可以使用我博客中描述技术.

在这种情况下,您将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>
Run Code Online (Sandbox Code Playgroud)

然后为子模块启用它:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-deploy-plugin</artifactId>
    <executions>
        <execution>
            <id>default-deploy</id>
            <phase>deploy</phase>
        </execution>
    </executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)


小智 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>
Run Code Online (Sandbox Code Playgroud)