sách gpt4 ai đã đi

gradle - 链接 gradle 任务和 gradle 生命周期

In lại 作者:行者123 更新时间:2023-12-03 05:00:34 27 4
mua khóa gpt4 Nike

我对 Gradle 生命周期有一个基本的询问。我的项目是一个多模块项目。

我注意到以下命令:

./gradlew clean bignibou-server:run

不等于运行以下两个命令按顺序运行:
./gradlew clean

./gradlew bignibou-server:run
bignibou-server是我的模块之一。

第一个命令的输出导致以下两个命令的输出不同。

有人可以解释为什么这可能指向相关文档吗?

biên tập :在第一种情况下,一个生成的源输出被删除,而在第二种情况下它没有被删除。怎么会这样?

Sửa đổi 2 :

从根 xây dựng.gradle :
import io.franzbecker.gradle.lombok.task.DelombokTask

def javaVersion = 1.8

xây dựng kịch bản {

kho lưu trữ {
mavenCentral()
maven { url "http://repo.spring.io/release" }
maven { url "http://repo.spring.io/milestone" }
maven { url "http://repo.spring.io/snapshot" }
maven { url "https://plugins.gradle.org/m2/" }
}

phần mở rộng {
javaLanguageLevel = '1.8'
}

ext['mockito.version'] = "${mockitoVersion}"
ext['hibernate.version'] = "${hibernateVersion}"

phụ thuộc {
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
classpath("io.franzbecker:gradle-lombok:${gradleLombokVersion}")
}
}

configure(allprojects) { project ->
group = "com.bignibou"

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'idea'

configurations {
mapstruct
}

kho lưu trữ {
mavenCentral()
maven { url "http://repo.spring.io/release" }
maven { url "http://repo.spring.io/milestone" }
maven { url "http://repo.spring.io/snapshot" }
maven { url "https://artifacts.elastic.co/maven" }
}

compileJava {
sourceCompatibility = javaVersion
targetCompatibility = javaVersion
}

test {
reports.html.destination = file("$reports.html.destination/unit")
reports.junitXml.destination = file("$reports.junitXml.destination/unit")
}

task delombok(type: DelombokTask) {
ext.outputDir = file("$buildDir/src-delomboked/java")
outputs.dir(outputDir)
sourceSets.main.java.srcDirs.each {
inputs.dir(it)
args(it, "-d", outputDir)
}
}

// FIXME: refactor paths to generated sources
task mapStructClean {
delete file("build/generated-sources/mapstruct/main")
}

task generateMainMapperClasses(type: JavaCompile, group: 'build') {
ext.aptDumpDir = file("${buildDir}/tmp/apt/mapstruct")
destinationDir = aptDumpDir

classpath = compileJava.classpath + configurations.mapstruct
source = file("$buildDir/src-delomboked/java")
ext.sourceDestDir = file("build/generated-sources/mapstruct/main")

options.define(
compilerArgs: [
"-nowarn",
"-proc:only",
"-encoding", "UTF-8",
"-processor", "org.mapstruct.ap.MappingProcessor" + ',lombok.launch.AnnotationProcessorHider$AnnotationProcessor',
"-s", sourceDestDir.absolutePath,
"-source", rootProject.javaLanguageLevel,
"-target", rootProject.javaLanguageLevel,
]
);

inputs.dir source
outputs.dir "${buildDir}/generated-sources/mapstruct/main"
doFirst {
sourceDestDir.mkdirs()
}
doLast {
aptDumpDir.delete()
}
}
}

task wrapper(type: Wrapper) { gradleVersion = '3.5' }

Từ bignibou-commmon模块:
description = "Bignibou Common"

apply plugin: 'org.springframework.boot'
apply plugin: 'io.franzbecker.gradle-lombok'

configurations {
querydslapt
mapstruct
}


dependencyManagement {
phụ thuộc {
dependency "org.elasticsearch:elasticsearch:${elasticsearchVersion}"
}
}

phụ thuộc {

compile("org.springframework.boot:spring-boot-starter-data-jpa") {
exclude group: 'org.apache.tomcat', module: 'tomcat-jdbc'
}
compile("org.springframework.boot:spring-boot-starter-mail")
compile('org.springframework.security:spring-security-core')
compile('org.hibernate:hibernate-validator')
compile("org.hibernate:hibernate-java8")
compile("com.fasterxml.jackson.datatype:jackson-datatype-jsr310")

//Spring cloud
compile("org.springframework.cloud:spring-cloud-spring-service-connector")
compile("org.springframework.cloud:spring-cloud-localconfig-connector")
compile("org.springframework.cloud:spring-cloud-cloudfoundry-connector")

// Relational Database
compile("org.postgresql:postgresql:${postgresqlVersion}")
compile("org.flywaydb:flyway-core")

// Connection pooling
compile("com.zaxxer:HikariCP")

//Shield
compile("org.elasticsearch.client:x-pack-transport:${elasticsearchVersion}")
compile("org.elasticsearch:elasticsearch:${elasticsearchVersion}")
compile("org.apache.logging.log4j:log4j-api")
compile("org.apache.logging.log4j:log4j-core")

// QueryDSL
compile("com.querydsl:querydsl-core:${queryDslVersion}")
compile("com.querydsl:querydsl-jpa:${queryDslVersion}")
querydslapt("com.querydsl:querydsl-apt:${queryDslVersion}")

// Jackson
compile("com.fasterxml.jackson.core:jackson-core")
compile("com.fasterxml.jackson.core:jackson-annotations")

compile("org.mapstruct:mapstruct-jdk8:${mapstructVersion}")
mapstruct("org.mapstruct:mapstruct-processor:${mapstructVersion}")
compile("org.apache.httpcomponents:httpclient:${httpClientVersion}")

compile("org.jasypt:jasypt:${jasyptVersion}")

}

sourceSets {

chủ yếu {
ext.originalJavaSrcDirs = java.srcDirs
java.srcDir "build/generated-sources/mapstruct/main"
output.dir("build/generated-mail-templates")
}

generated {
java {
srcDirs = ["build/generated-sources/java", "build/src-delomboked/java", "build/generated-sources/mapstruct/main"]
}
}
}

bootRepackage {
enabled = false
}

task generateQueryDSL(type: JavaCompile, group: 'build') {
description "Generates the QueryDSL query types"
source = sourceSets.main.java
classpath = configurations.compile + configurations.querydslapt
options.compilerArgs = [
"-proc:only",
"-processor",
"com.querydsl.apt.jpa.JPAAnnotationProcessor" + ',lombok.launch.AnnotationProcessorHider$AnnotationProcessor'
]
destinationDir = sourceSets.generated.java.srcDirs.iterator().next()
}

// FIXME: add cssFile &
// FIXME: add dependsOn processMailTemplates &
// FIXME: clean mail templates html
// FIXME: ensure build is stopped if templates are not processed

task npmInstall(type: Exec) {
description "npm install"
commandLine 'npm', 'install'
}

task processMailTemplates {
description "Processes mail templates"
dependsOn npmInstall

def templateSrcDir = "src/main/templates/mail/"
def templateDestDir = "build/generated-mail-templates/META-INF/templates/mail/"

mkdir templateDestDir

def templateNames = []

fileTree(dir: templateSrcDir, include: '**/*.html').visit {
FileVisitDetails details -> templateNames << details.file.name
}

templateNames.each { templateName -> inlineCss(templateSrcDir + templateName, templateDestDir + templateName) }

outputs.upToDateWhen { false }
}

static def inlineCss(src, dest) {
def juice = 'node_modules/.bin/juice'
def juiceResourcesDir = 'src/main/templates/misc/'
def juiceArgs = "--options-file ${juiceResourcesDir}juiceOptions.json --css ${juiceResourcesDir}mailStyle.css"
"${juice} ${juiceArgs} ${src} ${dest}".execute(null, new File('bignibou-common'))
}


compileJava {
dependsOn generateQueryDSL
source generateQueryDSL.destinationDir
}

compileGeneratedJava {
dependsOn generateQueryDSL
options.warnings = false
classpath += sourceSets.main.runtimeClasspath
}

idea {
module {
sourceDirs += file('build/generated-sources/java')
}
}

processResources.dependsOn processMailTemplates
compileJava.dependsOn generateMainMapperClasses
generateMainMapperClasses.dependsOn mapStructClean
generateMainMapperClasses.dependsOn delombok


clean {
delete sourceSets.generated.java.srcDirs
}

Từ bignibou-server模块:
description = "Bignibou Server"

configurations {
mapstruct
integrationTest
integrationTestCompile.extendsFrom testCompile
integrationTestRuntime.extendsFrom testRuntime
}

apply plugin: 'io.franzbecker.gradle-lombok'
apply plugin: 'org.springframework.boot'
apply plugin: 'application'


dependencyManagement {
phụ thuộc {
dependency "org.elasticsearch:elasticsearch:${elasticsearchVersion}"
}
}

phụ thuộc {
compile project(":bignibou-common")
compile project(":bignibou-client")

//Spring boot
compile("org.springframework.boot:spring-boot-starter-actuator")
compile("org.springframework.boot:spring-boot-starter-data-jpa") {
exclude group: 'org.apache.tomcat', module: 'tomcat-jdbc'
}
compile("org.springframework.boot:spring-boot-starter-data-redis") {
exclude group: 'redis.clients', module: 'jedis'
}
compile("biz.paluch.redis:lettuce:${lettuceVersion}")
compile("org.springframework.boot:spring-boot-starter-web")
compile("org.springframework.boot:spring-boot-starter-security")
compile("org.springframework.boot:spring-boot-starter-thymeleaf")
compile("org.springframework.boot:spring-boot-starter-cache")

// Miscellaneous
compile("commons-collections:commons-collections")
compile("org.apache.commons:commons-lang3:${commonLangVersion}")
mapstruct("org.mapstruct:mapstruct-processor:${mapstructVersion}")

//Caching
compile("org.hibernate:hibernate-ehcache")
compile("com.github.ben-manes.caffeine:caffeine:${caffeineVersion}")

// Spring Session
compile("org.springframework.session:spring-session")

// Testing
testCompile project(":bignibou-test")
}

run {
systemProperty "spring.cloud.propertiesFile", System.getProperty("user.dir") + "/spring-cloud.properties"
}

springBoot {
mainClassName = "com.bignibou.Application"
}

sourceSets {

chủ yếu {
ext.originalJavaSrcDirs = java.srcDirs
java.srcDir "build/generated-sources/mapstruct/main"
}

generated {
java {
srcDirs = ["build/src-delomboked/java", "build/generated-sources/mapstruct/main"]
}
}

integrationTest {
java.srcDirs = ['src/it/java']
resources.srcDirs = ['src/it/resources', 'src/main/resources']
compileClasspath = sourceSets.main.output + configurations.testRuntime
runtimeClasspath = output + compileClasspath
}
}

task integrationTest(type: Test) {
description "Run the integration tests."
testClassesDir = sourceSets.integrationTest.output.classesDir
classpath = sourceSets.integrationTest.runtimeClasspath
reports.html.destination = file("$reports.html.destination/integration")
reports.junitXml.destination = file("$reports.junitXml.destination/integration")
}

compileJava.dependsOn generateMainMapperClasses
generateMainMapperClasses.dependsOn mapStructClean
generateMainMapperClasses.dependsOn delombok

check.dependsOn integrationTest
integrationTest.shouldRunAfter test

编辑 3 : 被第一个命令而不是第二个命令删除的文件夹如下(来自 bignibou-common 模块):
build/generated-mail-templates

编辑 4 : 我注意到在注释掉 output.dir(... 之后调用(见下文), build/generated-mail-templates没有被删除,但不幸的是模板不包含在类路径中......
   sourceSets {
chủ yếu {
ext.originalJavaSrcDirs = java.srcDirs
java.srcDir "build/generated-sources/mapstruct/main"
//output.dir("build/generated-mail-templates")
}

1 Câu trả lời

task processMailTemplates {
description "Processes mail templates"
dependsOn npmInstall

def templateSrcDir = "src/main/templates/mail/"
def templateDestDir = "build/generated-mail-templates/META-INF/templates/mail/"

mkdir templateDestDir

def templateNames = []

fileTree(dir: templateSrcDir, include: '**/*.html').visit {
FileVisitDetails details -> templateNames << details.file.name
}

templateNames.each { templateName -> inlineCss(templateSrcDir + templateName, templateDestDir + templateName) }

outputs.upToDateWhen { false }
}

无论您要求 gradle 执行什么任务,所有这些代码都在配置阶段执行。它应该在执行阶段执行:
task processMailTemplates {
description "Processes mail templates"
dependsOn npmInstall

outputs.upToDateWhen { false }

doLast {
def templateSrcDir = "src/main/templates/mail/"
def templateDestDir = "build/generated-mail-templates/META-INF/templates/mail/"

mkdir templateDestDir

def templateNames = []

fileTree(dir: templateSrcDir, include: '**/*.html').visit {
FileVisitDetails details -> templateNames << details.file.name
}

templateNames.each { templateName -> inlineCss(templateSrcDir + templateName, templateDestDir + templateName) }
}
}

关于gradle - 链接 gradle 任务和 gradle 生命周期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44199793/

27 4 0
Bài viết được đề xuất: android - 不兼容的gradle插件
Bài viết được đề xuất: android - 如何使CircleCI使用特定的Gradle版本?
Bài viết được đề xuất: intellij-idea - 从其他模块访问类
Bài viết được đề xuất: gradle - gradle-替换XML文件中的文本
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com