簡體   English   中英

查詢WAR插件的Gradle依賴關系

[英]Query for Gradle dependency for WAR plugin

我是Gradle的新手。 使用Gradle 3.5,我試圖從Java項目創建一個war構建。 以下是我的gradle文件內容。

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 build時,它將在WEB-INF/lib目錄下添加jar文件。 但是,除了那些jar文件之外,我還希望com.system組中的jar文件和bundleJar任務生成的jar文件。 我該如何實現?

默認情況下,來自compile配置的庫包含在classpath ,但classpath = configurations.localLibraries 。localLibraries覆蓋默認值。

可以覆蓋 其他文件,而不是覆蓋默認的類路徑classpath = ...實際上表示setClasspath(...) ):

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

感謝您對此的回應。 萬分感激。

我已經找到了解決辦法。 了解到gradle遵循一些目錄約定,因此請更改gradle支持的目錄結構並更改gradle腳本。

這是工作的gradle腳本:

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*'
    }*/
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM