gradle XJC 任务将模式创建为单独的模块

问题描述 投票:0回答:1

我创建了以下 build.gradle 文件,它从 xsd 文件生成 Java 类,并将这些生成的类放入一个包中,该包与 src/main/java 中的主包分开创建。我无法将这些类导入到主包中。有没有办法在“com.example.demo”包中为生成的类创建包?

buildscript {
    repositories {
        mavenCentral()
    }
}

plugins {
    id 'org.springframework.boot' version "$springBootVersion"
    id 'io.spring.dependency-management' version "$springDependencyVersion"
    id 'java'
    id "org.sonarqube" version "$sonarqubeVersion"
    id 'jacoco'
    id 'checkstyle'
}

checkstyle {
    toolVersion = "$checkstyleToolVersion"
    configFile = file("${rootProject.projectDir}/checkstyle/checkstyle.xml")
    ignoreFailures = false
    checkstyleMain.exclude '**/generated_java_classes/marshallerto/**'
}

tasks.withType(Checkstyle) {
    reports {
        xml.enabled true
        html.enabled true
    }
}

group = 'com.example.demo'
version = "$projectVersion"
sourceCompatibility = "$sourceCompatibility"


configurations {
    compileOnly {
        extendsFrom annotationProcessor
    }
    jaxb
}

repositories {
    mavenCentral()
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'org.springframework.boot:spring-boot-starter-web-services'
    implementation 'org.springframework.boot:spring-boot-starter-actuator'
    implementation "junit:junit:$junitVersion"
    implementation 'com.fasterxml.jackson.dataformat:jackson-dataformat-xml'
    implementation 'org.apache.commons:commons-lang3'
    implementation group: 'org.springframework.cloud', name: 'spring-cloud-starter-sleuth', version: "$starterSleuthVersion"
    implementation "io.github.openfeign:feign-okhttp:$okHttpVersion"
    implementation "io.github.openfeign:feign-gson:$gsonVersion"
    implementation group: 'com.oracle.database.jdbc', name: 'ojdbc8', version: "$odbcVersion"
    implementation "org.glassfish.jaxb:jaxb-runtime:2.3.3"
    implementation 'jakarta.xml.bind:jakarta.xml.bind-api:4.0.0'
    implementation group: 'wsdl4j', name: 'wsdl4j', version: '1.6.2'
    implementation group: 'javax.xml.bind', name: 'jaxb-api', version: '2.3.1'
    implementation group: 'javax.activation', name: 'activation', version: '1.1.1'
    implementation group: 'com.sun.xml.bind', name: 'jaxb-impl', version: '2.3.1'
    implementation group: 'com.jcraft', name: 'jsch', version: '0.1.55'

    jaxb (
            'com.sun.xml.bind:jaxb-xjc:2.3.1',
            'com.sun.xml.bind:jaxb-impl:2.3.1',
            'org.glassfish.jaxb:jaxb-runtime:2.3.3'
    )

    developmentOnly 'org.springframework.boot:spring-boot-devtools'
    compileOnly 'org.projectlombok:lombok'
    annotationProcessor 'org.projectlombok:lombok'
    annotationProcessor 'org.springframework.boot:spring-boot-configuration-processor'

    testCompile group: 'org.powermock', name: 'powermock-api-mockito2', version: "$powerMockVersion"
    testImplementation group: 'org.springframework.boot', name: 'spring-boot-test-autoconfigure', version: '2.6.5'
    testImplementation group: 'org.springframework.ws', name: 'spring-ws-test', version: '3.1.2'
    testImplementation('org.springframework.boot:spring-boot-starter-test') {
        exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
    }
}

dependencyManagement {
    imports {
        mavenBom "org.springframework.cloud:spring-cloud-dependencies:${releaseTrainVersion}"
    }
}

test {
    useJUnitPlatform()
}

jacoco {
    toolVersion = "0.8.5"
    reportsDir = file("build/reports/jacoco")
}

jacocoTestReport {
    reports {
        xml.enabled true
        csv.enabled false
    }
}

sonarqube {
    properties {
        property "sonar.java.coveragePlugin", "jacoco"
        property "sonar.jacoco.reportPath", "build/jacoco/test.exec"
        property "sonar.junit.reportsPath", "build/test-results/test"
        property "sonar.projectKey", rootProject.name
        property "sonar.host.url", "https://sonarqube.example.com"
        property "sonar.scm.forceReloadAll", "true"
        property "sonar.java.checkstyle.reportPaths", "build/reports/checkstyle/main.xml"
        property "sonar.coverage.exclusions", "**/com/example/demo/xohks/mx/**" +
                "**/com/example/demo/xohks/mx/controller/*" +
                "**/com/example/demo/xohks/mx/dto/*" +
                "**/com/example/demo/xohks/mx/marshallerto/*" +
                "**/com/example/demo/xohks/mx/service/*"
        property "sonar.cpd.exclusions", "**/com/example/demo/**"
        property "sonar.cpd.exclusions", "**/com/example/demo/**"
        property "sonar.exclusions", "**/com/example/demo/xohks/mx/config/**" +
                "**/com/example/demo/xohks/mx/service/implementations/SftpServerConnectionServiceImpl.java" +
                "**/com/example/demo/xohks/mx/service/implementations/FileTransferServiceImpl.java"

    }
}

bootJar {
    archiveName 'app.jar'
}

def addXjcTask(taskName, schema, pkg, dest) {

    file(dest).mkdirs()

    tasks.create(name: taskName, type: JavaExec) {
        classpath configurations.jaxb
        mainClass = 'com.sun.tools.xjc.XJCFacade'

        args schema, "-p", pkg, "-d", dest, "-no-header"
    }
}

archivesBaseName = "marshallerto"

addXjcTask("maven-xsd",
        "src/main/resources/xsd_xsd0.xsd",
        "${archivesBaseName}",
        "src/main/java/generated_java_classes")

tasks.register("generateSources") {
    description "Generate Java sources from the XSD file"
    dependsOn tasks.getByName("maven-xsd")
}

compileJava.dependsOn "generateSources"


java spring-boot gradle build.gradle xjc
1个回答
0
投票

你可以使用这样的东西。 在这里,我的任务 xsd2java 为文件夹创建了 genrated clsses:generated.com.XXX.sample.example.XXX.aaaa.bbbb

sourceSets {
    main {
        output.dir(generatedResources, builtBy: 'xsd2java')
        java {
            srcDir "$generatedResources"
        }
    }
}

问候, 维克拉姆帕塔尼亚

© www.soinside.com 2019 - 2024. All rights reserved.