首页 > 解决方案 > 如何将部署配置保留在已部署的 pom.xml 之外?

问题描述

我有一个项目只将一个部署pom.xml到 Maven Central。它旨在用作父 POM。因此,包装是pom

我的问题是由于以下重叠而出现的:

结果,部署配置与我的父 POM 一起部署。默认情况下,每个使用我的父 POM 的项目也会在执行时部署到 Maven Central mvn release。这是上述重叠的不良副作用。

我想在没有部署信息的情况下部署父 POM。我怎样才能做到这一点?

(我强烈怀疑我可以以某种方式将要部署的 POM 与进行部署的 POM 分开,但我不知道如何。)

上述“部署信息”包括:

另请注意,我实际上将其他构建插件配置为已部署的 POM 的一部分。

是与pom.xml我的问题相关的特定版本的链接。

这是上面链接的文件的副本,我实际想要部署的所有内容都替换为<!-- ... -->. 因此,这仅包含pom.xml我不想包含在已部署工件中的部分:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

  <!-- ... -->

  <build>
    <plugins>
      <!-- ... -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-gpg-plugin</artifactId>
        <version>${version.plugin.gpg}</version>
        <executions>
          <execution>
            <id>sign-artifacts</id>
            <phase>verify</phase>
            <goals>
              <goal>sign</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-source-plugin</artifactId>
        <version>${version.plugin.source}</version>
        <executions>
          <execution>
            <id>attach-sources</id>
            <goals>
              <goal>jar-no-fork</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <!-- ... -->
      <plugin>
        <groupId>org.sonatype.plugins</groupId>
        <artifactId>nexus-staging-maven-plugin</artifactId>
        <version>${version.plugin.nexus-staging}</version>
        <extensions>true</extensions>
        <configuration>
          <serverId>ossrh</serverId>
          <nexusUrl>https://oss.sonatype.org/</nexusUrl>
          <autoReleaseAfterClose>true</autoReleaseAfterClose>
        </configuration>
      </plugin>
    </plugins>
    <!-- ... -->
  </build>

  <distributionManagement>
    <snapshotRepository>
      <id>ossrh</id>
      <url>https://oss.sonatype.org/content/repositories/snapshots</url>
    </snapshotRepository>
    <repository>
      <id>ossrh</id>
      <url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
    </repository>
  </distributionManagement>
</project>

标签: maven

解决方案


回答我自己的问题,我认为不能完全按照我的要求来完成。但是,我找到了一个可行的替代方案,至少可以让我避免当前的问题。

我试过了:

  • 用于从资源<resources>中删除pom.xml,然后添加不同的pom.xml. 这不起作用,因为显然 Maven 在指定时总是使用主 POM 进行部署<packaging>pom</packaging>
  • 制作我想要部署外部模块的子模块的模块。我将所有与部署相关的配置都放入了外部模块中。这不起作用,因为 Maven 期望在该特定子模块中定义每个子模块的部署配置。

这是我找到的解决方法:

我将所有与部署相关的配置放入同一个 POM 中的一个新配置文件中,默认情况下它是不活动的。子模块仍将继承此配置文件。但是由于默认情况下它是不活动的,所以除非明确激活,否则它不会造成任何伤害。

如果有人感兴趣,这里是更改后的版本。这是特定的提交,您可以其中看到部署配置向下移动到 POM 的配置文件部分。


推荐阅读