2014-05-16 110 views
1

我有這個父POM文件(hawaii-banner\pom.xml):錯誤: 'dependencies.dependency.version' 必須是一個有效的版本,但

<?xml version="1.0"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0"> 
    <modelVersion>4.0.0</modelVersion> 
    <parent> 
    <artifactId>base</artifactId> 
    <groupId>org.sakaiproject</groupId>  
    <version>2.9.3</version> 
    <relativePath>../pom.xml</relativePath> 
    </parent> 
    <name>University of Hawaii Banner</name> 
    <groupId>edu.hawaii.sakai</groupId> 
    <artifactId>hawaii-banner</artifactId> 
    <version>${hawaii.banner.version}</version> 
    <packaging>pom</packaging> 
    <properties> 
    <downloadSources>true</downloadSources> 
    <downloadJavadocs>true</downloadJavadocs> 
    <hawaii.banner.version>2.5.0</hawaii.banner.version> 
    <uh-gatech.version>2.5.1</uh-gatech.version> 
    </properties> 
    <dependencies> 
    <dependency> 
     <groupId>org.sakaiproject.kernel</groupId> 
     <artifactId>sakai-kernel-api</artifactId> 
     <version>${sakai.kernel.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.sakaiproject.kernel</groupId> 
     <artifactId>sakai-kernel-util</artifactId> 
     <version>${sakai.kernel.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>4.4</version> 
     <scope>test</scope> 
    </dependency> 
    </dependencies> 

    <build> 
    <plugins> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-surefire-plugin</artifactId> 
     <configuration> 
      <includes> 
      <include>**/*Test.java</include> 
      </includes> 

      <!-- Exclude by default the tests that use remote systems. --> 
      <excludes> 
      <exclude>**/*Test.java</exclude> 
      </excludes> 
     </configuration> 
     </plugin> 
    </plugins> 
    </build> 

    <modules> 
    <module>api</module> 
    <module>impl</module> 
    <module>integration-test</module> 
    <module>pack</module> 
    <module>sections-impl</module> 
    </modules> 

</project> 

而且這個孩子POM文件(hawaii-banner\api\pom.xml):

<?xml version="1.0"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0"> 
    <modelVersion>4.0.0</modelVersion> 
    <parent> 
    <groupId>edu.hawaii.sakai</groupId> 
    <artifactId>hawaii-banner</artifactId> 
    <version>2.5.0</version> 
    <relativePath>../pom.xml</relativePath> 
    </parent> 
    <name>University of Hawaii Banner API</name> 
    <groupId>edu.hawaii.sakai</groupId> 
    <artifactId>hawaii-banner-api</artifactId> 
    <version>${hawaii.banner.version}</version> 
    <packaging>jar</packaging> 
    <properties> 
    <deploy.target>shared</deploy.target> 
    </properties> 
    <dependencies> 
    <dependency> 
     <groupId>dom4j</groupId> 
     <artifactId>dom4j</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>edu.gatech.sakai</groupId> 
     <artifactId>uh-gatech-banner-api</artifactId> 
     <version>${uh-gatech.version}</version> 
     <scope>provided</scope> 
    </dependency> 
    </dependencies> 
</project> 

但我發現了這個錯誤:

[ERROR]  'dependencies.dependency.version' for edu.gatech.sakai:uh-gatech-banner-api:jar must be a valid version but is '${uh-gatech.version}'. @ edu.hawaii.sakai:hawaii-banner-api:${hawaii.banner.version}, C:\hawaii-sakai-2.9.3\sakai-src-2.9.3\hawaii-banner\api\pom.xml, line 26, column 16 

我不明白爲什麼我得到這個錯誤BEC使用uh-gatech.version在父POM文件中定義,並且<version>${uh-gatech.version}</version>曾用於<version>2.5.1</version>,該工作。我運行mvn clean install從父POM文件相同的目錄,它不起作用。

+0

你可以發佈你的完整2文件和完整的命令,你正在運行? – jordan

+0

我更新了我的問題。 –

+0

我刪除了您的特定依賴關係,並將其替換爲其他公共依賴項,並且它能夠解析依賴項中的變量。我用maven 3.2.1 FYI。 – jordan

回答

2

如果maven提供此錯誤,則表示子模塊無法正確識別父項。我見過這種情況發生在錯誤的版本上。
你認爲你正在定義正確的父母,但你不是。正如@jordan建議的那樣,通過消除孩子與父母的關係,你可以看到它的效果。

你不能將模塊的版本定義爲你在同一個pom中定義的變量,maven不會希望這樣。

儘管你認爲這是2.5.0,它不是...

我建議您查看項目這種關係定義。

我希望這會有所幫助。

相關問題