我在我的应用程序中使用了几个模块中的guava。 我在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>
我正在考虑在我的root 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上运行?现在我需要在使用guava的所有模块中复制相同的代码。
答案 0 :(得分:3)
您定义了${guava.version}
吗?在pom.xml中查找<properties>
:
<properties>
<guava.version>15.0</guava.version>
<!-- another project properties here -->
</properties>
此外,current version of Guava (16.0.1 as of writing this answer) is CDI agnostic,因此你应该使用简单的依赖声明,而不需要为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。在Guava 15.0(as a bug workaround)中<classifier>cdi1.0</classifier>
只有 ,所以如果由于某种原因你被困在15.0上,你可能不应该使用${guava.version}
而是硬编码<version>15.0</version>
...