如何使用 Maven 访问 settings.xml in pom.xml 中的元素?
How to access elements from settings.xml in pom.xml with Maven?
根据 https://maven.apache.org/pom.html#properties 应该可以使用 ${settings.x}
从 pom.xml 文件中的 settings.xml 文件访问元素 <settings><x>value</x></settings>
。
然而,当我尝试
<profiles>
<profile>
<activation>
<file>
<exists>${settings.localRepository}/path/to/file</exists>
</file>
</activation>
</profile>
</profiles>
在我的 pom.xml 中它没有在有效的 pom.xml 中被替换。当我用 ${user.home}/.m2/repository
替换 ${settings.localRepository}
时,它工作正常,但这不是我想要的。我能做些什么来解决这个问题吗? (使用 Apache Maven 3.6.0 测试。)
背景资料:
我有一个在线 Maven 存储库中不存在的依赖项,我无法更改它。它必须由用户编译并可以安装到本地存储库。我没有手动执行此操作,而是尝试在 pom.xml 中自动执行此操作。为此,如果本地存储库中不存在依赖项,我必须忽略它。因此,检查文件是否存在于本地存储库中的配置文件。没有配置文件,maven 甚至不会启动生命周期,因为无法解决依赖关系。当然,项目不会在第一次执行 pom.xml 时编译。但是所有依赖项都会自动安装,并且项目将在第二次通过时进行编译。我知道这不是一个干净的解决方案,但我认为这比告诉用户在编译该项目之前手动编译和安装依赖项 xy 更好。我还包括一个构建脚本,它首先运行 mvn clean initialize
来安装依赖项,然后 mvn clean compile
.
将外部依赖源放在自己的项目中,如:
+- main
+- pom.xml ... <packaging>pom...<module>external...<module>internal
|
+- external
| +- ... Maven dirs as usual ...
| + pom.xml
|
+- internal
+- ... Maven dirs as usual ...
+- pom.xml ... <dependency>external
这样在构建 main
时,Maven Reactor 负责项目的构建顺序(先构建 external
,然后是 internal
),您可以忘记关于处理 settings.xml
、存储库、配置文件或属性。
根据 https://maven.apache.org/pom.html#properties 应该可以使用 ${settings.x}
从 pom.xml 文件中的 settings.xml 文件访问元素 <settings><x>value</x></settings>
。
然而,当我尝试
<profiles>
<profile>
<activation>
<file>
<exists>${settings.localRepository}/path/to/file</exists>
</file>
</activation>
</profile>
</profiles>
在我的 pom.xml 中它没有在有效的 pom.xml 中被替换。当我用 ${user.home}/.m2/repository
替换 ${settings.localRepository}
时,它工作正常,但这不是我想要的。我能做些什么来解决这个问题吗? (使用 Apache Maven 3.6.0 测试。)
背景资料:
我有一个在线 Maven 存储库中不存在的依赖项,我无法更改它。它必须由用户编译并可以安装到本地存储库。我没有手动执行此操作,而是尝试在 pom.xml 中自动执行此操作。为此,如果本地存储库中不存在依赖项,我必须忽略它。因此,检查文件是否存在于本地存储库中的配置文件。没有配置文件,maven 甚至不会启动生命周期,因为无法解决依赖关系。当然,项目不会在第一次执行 pom.xml 时编译。但是所有依赖项都会自动安装,并且项目将在第二次通过时进行编译。我知道这不是一个干净的解决方案,但我认为这比告诉用户在编译该项目之前手动编译和安装依赖项 xy 更好。我还包括一个构建脚本,它首先运行 mvn clean initialize
来安装依赖项,然后 mvn clean compile
.
将外部依赖源放在自己的项目中,如:
+- main
+- pom.xml ... <packaging>pom...<module>external...<module>internal
|
+- external
| +- ... Maven dirs as usual ...
| + pom.xml
|
+- internal
+- ... Maven dirs as usual ...
+- pom.xml ... <dependency>external
这样在构建 main
时,Maven Reactor 负责项目的构建顺序(先构建 external
,然后是 internal
),您可以忘记关于处理 settings.xml
、存储库、配置文件或属性。