2016-06-09 1639 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

相關問題