【发布时间】:2021-12-15 05:01:59
【问题描述】:
根据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。
【问题讨论】:
-
你能解释一下为什么你喜欢在你的 pom 文件中做这些事情吗?
-
@khmarbaise 完成。
-
听起来需要一个存储库管理器...或一个提供所需的由适当凭据保护的外部管理器...
标签: maven pom.xml maven-profiles maven-repository