Eclipse maven tycho加载p2回购位置的属性文件
我希望有一个外部属性文件,其中包含生成中使用的本地p2镜像的位置,例如:Eclipse maven tycho加载p2回购位置的属性文件,eclipse,maven,tycho,Eclipse,Maven,Tycho,我希望有一个外部属性文件,其中包含生成中使用的本地p2镜像的位置,例如: mirror.location=/my/mirror/location 我希望这是一个外部文件,因为我希望在maven和其他脚本中使用它,并且我希望避免用不同的语言复制位置 我发现我应该使用properties maven插件来做到这一点,如下所示 <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId&
mirror.location=/my/mirror/location
我希望这是一个外部文件,因为我希望在maven和其他脚本中使用它,并且我希望避免用不同的语言复制位置
我发现我应该使用properties maven插件来做到这一点,如下所示
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>properties-maven-plugin</artifactId>
<version>${tycho.version}</version>
<executions>
<execution>
<phase>validate</phase>
<goals>
<goal>read-project-properties</goal>
</goals>
<configuration>
<files>
<file>locations.properties</file>
</files>
</configuration>
</execution>
</executions>
</plugin>
org.codehaus.mojo
属性maven插件
${tycho.version}
验证
读取项目属性
地点、物业
然后,我想在同一pom文件中使用存储库url中的read属性
<repositories>
<repository>
<id>eclipse_mirror</id>
<url>${mirror.location}/eclipse/</url>
<layout>p2</layout>
</repository>
</repositories>
月蚀镜
${mirror.location}/eclipse/
p2
问题是Maven/Tycho在生命周期的任何阶段之前就加载了存储库,并打印出这个错误
[INFO]MavenProject的计算目标平台:。。。
[错误]内部错误:java.lang.RuntimeException:无效的存储库URL:${mirror.location}/eclipse/:无协议:${mirror.location}/eclipse/->[帮助1]
org.apache.maven.InternalErrorException:内部错误:java.lang.RuntimeException:无效的存储库URL:${mirror.location}/eclipse/
关于如何使用属性文件指定存储库URL的任何线索
问题是Maven/Tycho在生命周期的任何阶段之前就加载了存储库,并打印出这个错误
这一观察是正确的。只要不是固定的,就不能使用properties maven plugin
来操作Tycho在依赖项解析期间需要其值的属性
话虽如此,您是否意识到可以在Maven的setting.xml
中使用?这是一个更好的声明镜像等设置的地方,因为这样可以确保主构建(如pom.xml
中指定的)是自包含的,即不需要系统属性等外部知识
最后,请注意,您可以在应用程序中引用环境变量,如
${env.HOME}
。如果您将变量放入一个文件中,并让shell在调用mvn
之前对其进行源代码生成,那么您也可以在其他地方重复使用该文件(尽管它不是100%.properties
文件格式)。非常感谢您的注释。我使用settings.xml文件来镜像存储库,我基本上可以做我想做的事情,不像我希望的那样干净,但现在已经足够好了。谢谢。