我是新手。使用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文件。我怎样才能做到这一点呢?
默认情况下,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