gpt4 book ai didi

Gradle - 从 War 文件中排除提供的作用域 jar

转载 作者:行者123 更新时间:2023-12-02 11:47:49 25 4
gpt4 key购买 nike

Gradle 似乎声称在构建 war 文件时不包含providedCompile 和providedRuntime 范围。

但是,当我使用下面的 war 配置进行构建时,名为“lib-provided”的文件夹似乎包含所有提供的作用域 jar。如何限制此功能不包括提供的作用域 jar。

    configure(rootProject) {
apply plugin: 'idea'
apply plugin: 'spring-boot'
apply plugin: 'io.spring.dependency-management'
apply plugin: 'java'

targetCompatibility = 1.8
sourceCompatibility = 1.8

repositories {
mavenCentral()
mavenLocal()
maven { url "https://repository.jboss.org/nexus/content/groups/public-jboss/" }
}

// Import Spring Boot's bom, spring-boot-dependencies
dependencyManagement {
imports {
mavenBom 'org.springframework.boot:spring-boot-dependencies:1.2.5.RELEASE'
}
}


// Override the spring-data-releasetrain.version property
ext['spring-data-releasetrain.version'] = 'Fowler-SR1'

dependencies {
compile("org.springframework.boot:spring-boot-starter-actuator")
compile("org.springframework.boot:spring-boot-starter-security")
............ Other Spring Boot based projects
testCompile("org.springframework.boot:spring-boot-starter-test")

compile("com.fasterxml.jackson.datatype:jackson-datatype-hibernate4:2.4.6")

......... Below are the "Provided" Scoped packages

providedRuntime("org.springframework.boot:spring-boot-starter-tomcat")
providedCompile("org.apache.tomcat.embed:tomcat-embed-jasper:8.0.23")
providedCompile("org.hibernate:hibernate-core:4.3.7.Final")
providedCompile("org.hibernate:hibernate-infinispan:4.3.7.Final")
providedCompile("org.hibernate:hibernate-entitymanager:4.3.7.Final")
providedCompile("org.hibernate:hibernate-validator:5.1.3.Final")
providedCompile("org.hibernate:hibernate-search-orm:5.0.1.Final")
providedCompile("org.hibernate.common:hibernate-commons-annotations:4.0.4.Final")
providedCompile("org.infinispan:infinispan-core:7.1.1.Final")
providedCompile("org.infinispan:infinispan-query:7.1.1.Final")

testCompile("com.microsoft.sqlserver:sqljdbc41:4.1")
}


configurations {
providedCompile

// replaced with jcl-over-slf4j
all*.exclude group: 'commons-logging', module: 'commons-logging'
// replaced with log4j-over-slf4j
all*.exclude group: 'log4j', module: 'log4j'
}

}
war {
baseName = 'abc'
version = '5.0.0-SNAPSHOT-' + + System.currentTimeMillis();
doFirst {
manifest {
attributes("Implementation-Title": project.name, "Implementation-Version": version, "Implementation-Timestamp": new Date())
}
}
webAppDirName = 'web'
includeEmptyDirs false
archiveName 'abc.war'
}

谢谢!

最佳答案

在下面的配置中,Gradle 4.6以下依赖项都不会出现在 War/WEB-INF 库中。

如果您有 Ear build.gradle 可以包含如下条目,这将确保所有依赖 jar 都在 Ear/lib 文件夹中。

如果进行以下条目,生成的 Ear 文件将具有 .war 文件,并且 War/lib 文件夹将不会具有指定的依赖文件。

apply plugin: 'war'
earlib project(path: ':MyWebProject', configuration: 'compile')
deploy project(path: ':MyWebProject', configuration: 'archives')


apply plugin: 'war'
dependencies {

providedCompile('org.apache.logging.log4j:log4j-web')
providedCompile('org.springframework.boot:spring-boot-starter-web') {
exclude module: "spring-boot-starter-tomcat"
}

}

关于Gradle - 从 War 文件中排除提供的作用域 jar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31226604/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com