我正在应用程序中的几个模块中使用番石榴。我在Tomcat上部署了这个应用程序,所以我在模块中使用了这个依赖项。
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
</dependency>现在,我需要在Tomcat和JBoss上部署这个应用程序。对于JBoss,我需要在<classifier>cdi1.0</classifier>中使用相同的依赖项
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<classifier>cdi1.0</classifier>
</dependency>例如,我在考虑在根pom.xml中使用配置文件。
<profiles>
<profile>
<id>tomcat</id>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>${guava.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
</profile>
<profile>
<id>jboss</id>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>${guava.version}</version>
<classifier>cdi1.0</classifier>
</dependency>
</dependencies>
</dependencyManagement>
</profile>
</profiles>现在,当我成功地运行mvn clean install -Ptomcat项目构建时,但是当我运行mvn clean install -Pjboss时,我得到了异常:
The project [...] has 1 error 'dependencies.dependency.version'
for com.google.guava:guava:jar is missing.我认为这个错误是由于我需要修改我的所有模块而造成的。
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
</dependency>至
<profiles>
<profile>
<id>tomcat</id>
<dependencies>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
</dependency>
</dependencies>
</profile>
<profile>
<id>jboss</id>
<dependencies>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<classifier>cdi1.0</classifier>
</dependency>
</dependencies>
</profile>
</profiles>有更简单的方法让这个项目在Tomcat和JBoss上运行吗?现在,我需要在所有使用番石榴的模块中复制相同的代码。
发布于 2014-02-18 12:56:05
您定义了${guava.version}吗?查找<properties>中的pom.xml:
<properties>
<guava.version>15.0</guava.version>
<!-- another project properties here -->
</properties>此外,目前版本的番石榴(16.0.1在写这个答案时)是CDI不可知论的,因此您应该使用简单的依赖声明,而不需要为Tomcat / JBoss或使用cdi1.0分类器提供不同的配置文件:
<properties>
<guava.version>16.0.1</guava.version>
<!-- another project properties here -->
</properties>
<!-- <dependencies> -->
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>${guava.version}</version>
</dependency>P.S. <classifier>cdi1.0</classifier>在番石榴15.0 (作为一个bug的解决方案)中只有是可用的,所以如果您由于某种原因而被困在15.0,您可能不应该使用${guava.version},而应该使用硬编码<version>15.0</version>.
https://stackoverflow.com/questions/21853847
复制相似问题