首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >dependencyManagement用于<classifier>依赖项和不依赖项

dependencyManagement用于<classifier>依赖项和不依赖项
EN

Stack Overflow用户
提问于 2014-02-18 12:27:56
回答 1查看 1.2K关注 0票数 2

我正在应用程序中的几个模块中使用番石榴。我在Tomcat上部署了这个应用程序,所以我在模块中使用了这个依赖项。

代码语言:javascript
复制
<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
</dependency>

现在,我需要在Tomcat和JBoss上部署这个应用程序。对于JBoss,我需要在<classifier>cdi1.0</classifier>中使用相同的依赖项

代码语言:javascript
复制
<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <classifier>cdi1.0</classifier>
</dependency>

例如,我在考虑在根pom.xml中使用配置文件。

代码语言:javascript
复制
<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时,我得到了异常:

代码语言:javascript
复制
The project [...] has 1 error 'dependencies.dependency.version'
for com.google.guava:guava:jar is missing.

我认为这个错误是由于我需要修改我的所有模块而造成的。

代码语言:javascript
复制
<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
</dependency>

代码语言:javascript
复制
<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上运行吗?现在,我需要在所有使用番石榴的模块中复制相同的代码。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-18 12:56:05

您定义了${guava.version}吗?查找<properties>中的pom.xml:

代码语言:javascript
复制
<properties>
    <guava.version>15.0</guava.version>
    <!-- another project properties here -->
</properties>

此外,目前版本的番石榴(16.0.1在写这个答案时)是CDI不可知论的,因此您应该使用简单的依赖声明,而不需要为Tomcat / JBoss或使用cdi1.0分类器提供不同的配置文件:

代码语言:javascript
复制
<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>.

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21853847

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档