【问题标题】:Gradle custom provided scope include jars to war archiveGradle 自定义提供的范围包括 jar 到战争档案
【发布时间】:2015-11-12 21:23:06
【问题描述】:

我对提供的依赖范围有疑问。 在我的多项目中,结构如下:

ROOT - 耳朵

  • ejb
  • 网络

Web 模块依赖于 ejb。

这是我的根 build.gradle:

apply plugin: 'ear'
allprojects {
apply plugin: 'java'
apply plugin: 'idea'

configurations {
provided
}

sourceSets {
main {
compileClasspath += configurations.provided
runtimeClasspath += configurations.provided
}
test {
compileClasspath += configurations.provided
runtimeClasspath += configurations.provided
}
}

idea { module { scopes.PROVIDED.plus += [configurations.provided] } }

dependencies{
provided 'javax.enterprise:cdi-api:1.1'
}
}
dependencies{
deploy project(path: ':web', configuration: 'archives')
deploy project(':ejb')
}

}

在项目 ejb 中,我定义了提供的依赖项:

dependencies{
    provided 'javax.ejb:javax.ejb-api:3.2'
    provided 'javax.transaction:javax.transaction-api:1.2'
    provided 'org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.0.Final'
}

在网络模块中:

apply plugin: 'war'

dependencies{
    providedCompile project(':ejb')
    providedCompile 'javax.faces:javax.faces-api:2.2'
    providedCompile 'javax.servlet:javax.servlet-api:3.1.0'

}

使用 Gradle 战争插件时,您可以声明 providedCompile 依赖项告诉编译器包含那些 编译类路径中的依赖项,但不让 Gradle 包含 它们在打包的 .war 工件中。

但是当我提供的自定义包含这个对战争档案的依赖时: 'javax.enterprise:cdi-api:1.1'

如何解决我的问题?

【问题讨论】:

    标签: java maven jakarta-ee intellij-idea gradle


    【解决方案1】:

    我通过添加以下代码解决了我的问题:

    war {
        classpath = classpath - configurations.provided
    }
    

    【讨论】:

    • 你在哪里添加的?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-23
    • 1970-01-01
    • 1970-01-01
    • 2017-02-12
    • 2014-10-01
    • 2011-07-06
    相关资源
    最近更新 更多