gpt4 book ai didi

maven-2 - 在发布时匿名化 pom.xml

转载 作者:行者123 更新时间:2023-12-02 19:00:29 24 4
gpt4 key购买 nike

我有使用 Maven 构建和发布的工件。artefact的原始pom.xml包含通常的项目信息(artifactId、名称等)和依赖项。没关系。但 pom.xml 还包含私有(private)信息,例如 SCM URL、开发人员的名称或父工件。

有什么方法可以告诉 Maven 生成经过清理的 pom.xml,以便可以将工件发布给公众,而不破坏依赖项等技术相关信息?

SCM URL、开发人员列表和父 pom 的存在(仅用于 DepMgmt 定义和其他元内容)恕我直言与工件的用户无关,所以我假设我可以从发布的 pom.xml 中删除

存储库管理器(例如 Archiva)中的 pom.xml 以及打包在 artefact 的 jar 文件中的 pom.xml 都包含这些信息。我认为 Maven 只是复制整个内容。

总结一下:

我有:

<project>
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>my-artifact</artifactId>
<scm>
<connection>scm:svn:http://buildmachine/org.example/my-artifact/trunk</connection>
<developerConnection>scm:svn:http://buildmachine/org.example/my-artifact/trunk</developerConnection>
<url>http://buildmachine/org.example/my-artifact/trunk</url>
</scm>
<dependencies>
<dependency>
...
</dependency>
</dependencies>

我想要:

<project>
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>my-artifact</artifactId>
<dependencies>
<dependency>
...
</dependency>
</dependencies>

最佳答案

我不知道您的问题的完美解决方案,但有些事情可以做。这些都是技巧,但可能会有所帮助。
首先,从 pom 中外部化私有(private)信息(如 scm、开发人员名称等)。对于 scm 元数据,它将是:

<scm>
<connection>${my.scm.connection}</connection>
<developerConnection>${my.scm.developerConnection}</developerConnection>
<url>${my.scm.url}</url>
</scm>

其次,将属性移至 settings file将它们放入配置文件中。在设置文件中,您还可以“隐藏”您公司的私有(private)存储库。如果您必须与其他同事共享 profile/settings.xml 文件,请尝试使用运行 mvn -gs path_to_global_settings 的全局设置文件,或者准备好这些设置后准备常见的 Maven 安装。
遗憾的是,父 pom 部分必须保持不变。

关于maven-2 - 在发布时匿名化 pom.xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1769245/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com