2014-05-16 74 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,它不是...

我建议您查看项目这种关系定义。

我希望这会有所帮助。

相关问题