我想在我的maven项目中定义一个本地存储库.
我有一个超级pom和几个子模块.我的文件结构是:
/root
/repository
/child
pom.xml
pom.xml
Run Code Online (Sandbox Code Playgroud)
在我的超级pom我定义:
<repository>
<id>my-local-repo</id>
<url>file://${basedir}/repository</url>
</repository>
Run Code Online (Sandbox Code Playgroud)
问题是在我的孩子pom中,我的超级pom中定义的存储库引用/ root/child/repository,因此无法找到依赖项...
有没有办法定义一条始终相对于超级pom的路径?
如果没有,解决问题的最佳方法是什么?
在这种情况下,首先您可以尝试 ${project.parent.basedir}.
由于它似乎不起作用,简单(和本机)方法是使用完整路径(/root/...)或尝试使用相对路径(../)而不是使用 ${basedir} 变量。
但对我来说,一个很好的解决方案是将此配置外部化为一个属性文件。
您可以使用properties-maven-plugin ( http://mojo.codehaus.org/properties-maven-plugin/plugin-info.html )。
使用这个插件,可以像 pom.xml 中定义的属性一样读取属性文件中定义的属性。
从插件站点:
如果您有一个名为 team.properties 的属性文件,其中包含以下内容:
toronto=raptors
miami=heat
Run Code Online (Sandbox Code Playgroud)
与在 pom.xml 中声明以下内容相同:
<properties>
<toronto>raptors</toronto>
<miami>heat</miami>
</properties>
Run Code Online (Sandbox Code Playgroud)
${project.parent.basedir}应该做这项工作。
或者您可以在属性中设置根的 basedir-path,这样它将被继承。父级中有类似的东西
<properties>
<rootPath>${basedir}</rootPath>
</properties>
Run Code Online (Sandbox Code Playgroud)
而在孩子身上
<repository>
<id>my-local-repo</id>
<url>file://${rootPath}/repository</url>
</repository>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13136 次 |
| 最近记录: |