2012-01-11 66 views
2

不工作,我有這樣的目錄結構的Maven插件屬性 - 在繼承

root 
|- pom.xml 
|- submodule1 
     |- pom.xml 
     |- project.properties 
     |- subsubmodules 
      |-pom.xml 

Submodule1從根繼承和subsubmodules從submodule1繼承

Subsubmodules具有使用性能從submodule1的project.properties到依賴性已經定義了它的版本。 即Subsubmodules

<dependency> 
<groupId>some.org</groupId> 
<artifactId>someartifact</artifactId> 
<version>${themodules.version}</version> 
</dependency> 

在Submodule1的project.properties,我已經

themodules.version = 1.0 

因此,我通過在根pom.xml中定義它使用的屬性-行家-插件

<project> 
    <build> 
    <plugins> 
     <plugin> 
     <groupId>org.codehaus.mojo</groupId> 
     <artifactId>properties-maven-plugin</artifactId> 
     <version>1.0-alpha-2</version> 
     <executions> 
      <execution> 
      <phase>initialize</phase> 
      <goals> 
       <goal>read-project-properties</goal> 
      </goals> 
      <configuration> 
       <files> 
       <!-- *edited from earlier post <file>etc/config/dev.properties</file>--> 
<file>${basedir}/project.properties</file> 
       </files> 
      </configuration> 
      </execution> 
     </executions> 
     </plugin> 
    </plugins> 
    </build> 
</project> 

然後我在根目錄下運行mvn install。 Maven說它無法解析依賴關係中的$ {themodules.version}。

我也在子模塊級別運行mvn install,它仍然無法解析。

幫助請

回答

0

沒有在這裏做與繼承,你只需要您的project.properties的添加位置屬性 - Maven的插件的配置在你的根pom.xml中:

<configuration> 
    <files> 
    <file>etc/config/dev.properties</file> 
    <file>${project.basedir}/submodule1/project.properties</file> 
    </files> 
</configuration> 

然後做mvn乾淨安裝在根級別。

+0

對不起,我在根pom.xml中添加 $ {basedir} /project.properties,並假定它將繼承到子模塊pom模型。因此它應該讀取子模塊中的project.properties。這個假設是不正確的?鑑於繼承工作是自下而上的方法,父母很難確切地知道他們的子女是誰,以及project.properties文件的確切位置在子女 – ALQH 2012-01-12 22:05:26

+0

@ALQH內,因此沒有關於屬性文件繼承的概念,您只需要告訴properties-maven-plugin哪裏是讀取屬性文件的確切位置。 – yorkw 2012-01-12 22:10:38

+0

我在根目錄pom.xml中聲明,但是當我運行mvn install時,它仍然無法傳遞在subsubmodules中用作依賴版本的$ {themodules.version}。它說dependency.dependency.version無效。 – ALQH 2012-01-13 01:34:37

0

也有類似的問題,另一個代碼開發人員進行檢查。 他們有屬性 - Maven的插件的pom.xml下。

我將它移出到每個消耗屬性的子項目,並使其成爲相對路徑。 由於主pom在$ {project.basedir},子項目將在../${project.basedir}

也就是說,我添加了插件插件元素的勁歌,並將該文件元素設置爲$ {} project.basedir /../ default-pom.properties

當我這樣做,它的工作。