首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WAR插件Gradle依赖查询

WAR插件Gradle依赖查询
EN

Stack Overflow用户
提问于 2018-01-23 14:52:20
回答 2查看 529关注 0票数 0

我是Gradle的新手。在Gradle 3.5中,我试图从java项目创建一个war构建。下面是我的gradle文件内容。

代码语言:javascript
复制
apply plugin: 'war'

buildDir = "${rootProject.ext.buildGradle}/${project.name}"
def buildClassesDir = buildDir.getAbsolutePath() + '/classes/main'

configurations {
    localLibraries
}

task copyNonJava(type: Copy, dependsOn: compileJava) {
    from ('src/main/java') {
        exclude '**/*.java'
        include '**/*.properties'
    }
    from ('resources') {
        include 'default_content.properties'
    }

    into buildClassesDir

    includeEmptyDirs = false
}

task bundleJar (type: Jar, dependsOn: ['compileJava', 'copyNonJava']) {
    baseName archivesBaseName
    from buildClassesDir
}

task bundleWar (type: War, dependsOn: ['bundleJar']) {
    baseName = project.name
    from 'web'
    webXml = file( 'resources/WEB-INF/web.xml' )
    classpath = configurations.localLibraries
}

dependencies {
    compile group: 'com.system', name: 'core', version: rootProject.version, changing: true
    compile group: 'com.system', name: 'core-ui', version: rootProject.version, changing: true
    compile group: 'com.persistence', name: 'persistence', version: '1.0'
    compile group: 'com.surveys', name: 'survey', version: '1.0'

    localLibraries fileTree("lib") {
        exclude 'spring*'
    }
}

当我生成war构建时,它会在WEB-INF/lib目录下添加jar文件。但是,除了这些jar文件之外,我还需要来自com.system组的jar文件和从bundleJar任务生成的jar文件。我如何才能做到这一点?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-02-13 22:26:52

感谢您对此的回复。真的很感谢。

我已经想出了一种方法。了解到gradle遵循一些目录约定,因此对gradle支持的目录结构进行了更改,并对gradle脚本进行了更改。

下面是可用的gradle脚本:

代码语言:javascript
复制
apply plugin: 'war'

buildDir = "${rootProject.ext.buildGradle}/${project.name}"
def buildClassesDir = buildDir.getAbsolutePath() + '/classes/main'

configurations {
    localLibraries
}

task bundleJar (type: Jar, dependsOn: ['compileJava']) {
    baseName archivesBaseName
    from buildClassesDir
}

task bundleWar (type: War, dependsOn: ['bundleJar']) {
    dependsOn = [ 'bundleJar' ]
    baseName = project.name
    from 'web'
    webXml = file( 'resources/WEB-INF/web.xml' )
}

dependencies {
    compile group: 'com.system', name: 'core', version: rootProject.version, changing: true
    compile group: 'com.system', name: 'core-ui', version: rootProject.version, changing: true
    compile group: 'com.persistence', name: 'persistence', version: '1.0'
    compile group: 'com.surveys', name: 'survey', version: '1.0'

    // Replace this and make sure all necessary jar dependencies are been fetched from repository instead from file system
    /*localLibraries fileTree("lib") {
        exclude 'spring*'
    }*/
}
票数 0
EN

Stack Overflow用户

发布于 2018-01-23 19:30:57

默认情况下,classpath中包含来自compile配置的库,但classpath = configurations.localLibraries会覆盖默认值。

代替overriding the default classpath (classpath = ...实际上就是setClasspath(...)),你可以使用append additional files to it

代码语言:javascript
复制
task bundleWar (type: War, dependsOn: ['bundleJar']) {
  baseName = project.name
  from 'web'
  webXml = file( 'resources/WEB-INF/web.xml' )
  classpath configurations.localLibraries
  classpath bundleJar.archivePath
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48395772

复制
相关文章

相似问题

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