我想在我的maven项目中定义一个本地存储库.
我有一个超级pom和几个子模块.我的文件结构是:
/root
    /repository
    /child
        pom.xml
    pom.xml
在我的超级pom我定义:
<repository>
    <id>my-local-repo</id>
    <url>file://${basedir}/repository</url>
</repository>
问题是在我的孩子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
与在 pom.xml 中声明以下内容相同:
<properties> 
  <toronto>raptors</toronto>
  <miami>heat</miami>
</properties>
${project.parent.basedir}应该做这项工作。
或者您可以在属性中设置根的 basedir-path,这样它将被继承。父级中有类似的东西
<properties>
  <rootPath>${basedir}</rootPath>
</properties>
而在孩子身上
<repository>
  <id>my-local-repo</id>
  <url>file://${rootPath}/repository</url>
</repository>
| 归档时间: | 
 | 
| 查看次数: | 13136 次 | 
| 最近记录: |