我有多模块的ejb3-web应用程序概述如下:
project
- pom.xml
project_ear
- pom.xml
project_ejb
- pom.xml
project_web
- pom.xml
我有不同的类似项目,其中包含前一个(project_ejb)。
project2
- pom.xml
project2_ear
- pom.xml
project2_ejb
- pom.xml (here, project_ejb is gonna be included as a dependency)
project2_web
- pom.xml
如你所见,他们有类似的结构。无论如何,我遇到的问题是当我想使用$ {project.version}时,我无法再清理或构建project2。
这里是项目的pom样本
“project”父母pom:
<modelVersion>4.0.0</modelVersion>
<groupId>com.project</groupId>
<artifactId>project</artifactId>
<version>${project.version}</version>
<packaging>pom</packaging>
“project_ejb”pom:
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.project</groupId>
<artifactId>project</artifactId>
<version>${project.version}</version>
<relativePath>../project/pom.xml</relativePath>
</parent>
<artifactId>projectEjb</artifactId>
<packaging>ejb</packaging>
project2 parent pom:
<modelVersion>4.0.0</modelVersion>
<groupId>com.projectdata</groupId>
<artifactId>projectdata</artifactId>
<version>${project.version}</version>
<packaging>pom</packaging>
project2_ejb pom
<modelVersion>4.0.0</modelVersion>
<artifactId>projectdataEjb</artifactId>
<packaging>ejb</packaging>
<parent>
<groupId>com.projectdata</groupId>
<artifactId>projectdata</artifactId>
<version>${project.version}</version>
<relativePath>../projectdata/pom.xml</relativePath>
</parent>
我已将project_ejb模块作为依赖项添加到project2_ejb中:
<dependency>
<groupId>com.project</groupId>
<artifactId>projectEjb</artifactId>
<scope>provided</scope>
<type>ejb</type>
</dependency>
总而言之,当我构建项目时,一切都很好。但是,当我尝试构建project2时,它出现了maven控制台出现的问题,并说:
IllegalArgumentException: Illegal character in path at index 79: http://abcsvn01.host.myproject.net/maven/my/inhouse/com/project/project/${project.version}/project-${project.version}.pom -> [Help 1]
值得一提的是,当我删除$ {project.version}并编写常量时,一切正常。但是,为什么我不使用此功能,而maven3已经提供给我。
我将不胜感激任何帮助。提前谢谢。
答案 0 :(得分:2)
引用父级时,必须包含特定版本。您无法使用${project.version}
。这是因为您可能只想构建子项,而父项是在repo中。然后你需要指向一个特定的父母。
您孩子发生的事情是它试图找到一个名为project-${project.version}.pom
的pom文件,这是因为您没有提供与之相关的明确版本号。
这将有效(将版本更改为您的特定版本)。该版本将由孩子继承。
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.project</groupId>
<artifactId>project</artifactId>
<version>1.0-SNAPSHOT</version>
<relativePath>../project/pom.xml</relativePath>
</parent>
<artifactId>projectEjb</artifactId>
<packaging>ejb</packaging>
接下来,您需要在projectEjb
中提供相关project2_ejb
的版本。否则,它将无法知道要使用的projectEjb
版本。您的project
和project2
无关,因此其版本会有所不同。
添加了版本标记(更改为您的特定版本):
<dependency>
<groupId>com.project</groupId>
<artifactId>projectEjb</artifactId>
<version>1.0-SNAPSHOT</version>
<scope>provided</scope>
<type>ejb</type>
</dependency>