当前位置: 首页 > 知识库问答 >
问题:

WAR插件的Gradle依赖项查询

范弘亮
2023-03-14

我是新手。使用Gradle3.5,我试图从java项目创建一个war构建。下面是我的分级文件内容。

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文件。我怎样才能做到这一点呢?

共有1个答案

丌官凯康
2023-03-14

默认情况下,compile配置中的库包含在classpath中,但classpath=configurations.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
}
 类似资料:
  • War插件增加了名为providedCompile和providedRuntime的两个依赖配置.这两个配置有相同的作用域在编译或者运行时的配置,不同之处在于是否会将war文件归档.很重要的一点是它们都会提供配置传递.比如在任意的provided配置中添加了commons-httpclient:commons-httpclient:3.0,该依赖依赖于commons-codec,因为这个一个”pr

  • 最近,我发现了以下问题: 当我为我的项目设置依赖项管理时,我有一个child-pom,它使用具有依赖项的插件,我想要与在我的依赖项管理中声明的依赖项同步。 在根pom中,我在依赖项管理中声明: 在子pom中,我有一个插件需要gwt-user: 但是,如果我移除gwt-maven-plugin中使用的依赖版本,编译就会失败。 是不是还有别的办法可以实现呢? PS:在maven和maven插件中有一个

  • 我正在尝试使用WildFly Swarm构建一个web应用程序服务器,并且应用程序必须能够在内部运行另一个Java程序(我不想将其作为外部进程运行)。我试图将外部程序作为.jar依赖项包含到我的web应用程序中,但是,wildfly-swarm-package任务总是失败,原因如下: 作为一个实验,我尝试清空libs文件夹,但错误仍然存在。 谢谢,卢卡斯

  • 到 。 让我惊讶的是,通过创建的fat jar不再包含下所需的lib了吗?如果我将“实现”替换为“编译”,它就会像预期的那样工作。 有什么东西需要配置以便spring-boot-plugin添加它们吗?还是需要提前将项目升级到spring Boot2?

  • 我正在以下项目结构中使用Gradle Android实验插件: 设置.分级 Build.Gradle

  • 我们在不同的项目中有多个war文件,比如A和B,共享像图像这样的公共资源。公共资源被放置在单独的项目E中的war模块中,并且这个war文件作为依赖项添加到项目a和B中的所有war模块中。目前,我们正在使用maven资源插件将这些公共资源复制到a和B模块的根目录中。 我们如何使用Gradle来执行相同的操作?我尝试使用下面的配置,但是文件没有复制到生成的war文件中。它们只复制到build/libs