2016-06-09 1643 views
1

我需要获取位于我的根目录下的子目录的绝对路径。 例如,POM是: c:\somepath\pom.xml 我需要的绝对路径: c:\somepath\myIncludes\ 我需要这样的建筑中,POM,而与路径就像一个这些: c:\somepath\subdir1\pom.xml c:\somepath\subdir1\evendeeperdir\pom.xml有了maven,我怎样才能获得我根pom所在的绝对路径?

要尽量避开我需要这样做是因为:

  • 由pom构建的C++代码需要包含的路径。有多个C++项目具有不同的相对路径(所以即使相对路径可以工作,但它太冗长乏味,并且容易出错,无法使用多个相对路径)
  • 项目主要是java(所以我想要构建它与maven)
  • 整个事情是巨大的和遗产,所以我不能在结构上进行彻底的改变。
+0

使其成为pom.xml中的一个属性 – duffymo

+0

尝试使用$ {project.basedir} [here](https://maven.apache.org/guides/introduction/introduction-to-the-pom.html)是关于pom的一些信息 –

+0

这几乎可以工作,但是,我只是意识到我需要一个父pom所在的目录。所以我可以从中设置一个路径并将其用于目录中不同深度的子poms中结构(我将修改问题) – Solx

回答

0

曾几何时,我需要做同样的事情,但我需要一个版本。也许你可以修改this answer中的程序来确定一个根目录。

+0

这看起来可能会这样做,但我无法弄清楚rootPom有哪些其他属性。我真的希望有一条是它的道路。 – Solx

+0

rootPom只是一个Maven POM,具有POM在[Maven API]中的所有属性(http://maven.apache.org/ref/3.3.9/maven-core/apidocs/index.html?org/apache /maven/Maven.html)。当我读到这个问题时,我想'rootPom.basedir'就是你要找的东西。 – user944849

+0

我用你的想法找出解决方案。我使用gmaven(groovy)来建立pom的路径。然后我用goovy来提取我需要的部分路径。解决方案是一个真正的混乱,但会给我的路径。 – Solx

0

您可能可以使用环境变量${project.basedir}为您的路径搜索问题找到正确的入口点。

+0

可悲的是我需要的路径是相对于根pom。我发现,即使我在根源中捕捉到了这个价值,它也有了我正在构建的子项目的路径。 – Solx

0

通过添加属性maven的配置文件创建一个环境变量settings`

<profile> 
     <id>local-properties</id> 
     <properties> 
      <SOME_PATH>yourPath</SOME_PATH> 
     </properties> 
</profile> 
+0

这将由不同的绝对路径的各种人使用。我正在寻找一种自动确定路径的方法。 – Solx

+0

@Solx你有没有找到这个解决方案? – ypriverol

+0

我最终使用的解决方案是在顶部目录中放置一个具有特定名称的文件,然后运行groovy脚本来遍历目录以找到它。 – Solx

相关问题