我有一个只将一个pom.xml
部署到Maven Central的项目。
它旨在用作父POM。
因此,包装为pom
。
由于以下重叠,我的问题出现了:
要部署的信息,即艺术品内容,完全包含在pom.xml
内。
Maven在正确部署中需要的其他信息在pom.xml
内也。
因此,部署配置将与我的父POM一起部署。
默认情况下,每个使用我的父POM的项目都会在执行mvn release
时部署到Maven Central。
这是上述重叠的不希望的副作用。
我想在没有内部部署信息的情况下部署父POM。 我怎么能这样做?
(我强烈怀疑我能以某种方式分离POM,它将从部署的POM中部署,但我无法弄清楚如何。)
上面提到的“部署信息”包括:
/project/build/plugins/...
):
org.apache.maven.plugins:maven-gpg-plugin
org.apache.maven.plugins:maven-source-plugin
org.sonatype.plugins:nexus-staging-maven-plugin
/project/distributionManagement
)另请注意,还配置了其他构建插件,我实际上想要作为已部署POM的一部分进行部署。
Here是指向与我的问题相关的特定版本中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>
答案 0 :(得分:0)
回答我自己的问题,我不认为可以按照我的要求完成。 但是,我找到了一个可行的替代方案,至少使我能够避免当前的问题。
我试过了:
<resources>
从资源中删除pom.xml
,然后添加其他pom.xml
。这不起作用,因为显然Maven在指定<packaging>pom</packaging>
时始终使用主POM进行部署。以下是我找到的解决方法:
我将所有与部署相关的配置放入同一POM中的新配置文件中,默认情况下该活动不活动。 子模块仍将继承此配置文件。 但由于它默认不活动,除非明确激活,否则不会造成伤害。
如果有人感兴趣,here是更改后的版本。 this是特定的提交,您可以在其中看到部署配置向下移动到POM的配置文件部分。