我创建了以下 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"
你可以使用这样的东西。 在这里,我的任务 xsd2java 为文件夹创建了 genrated clsses:generated.com.XXX.sample.example.XXX.aaaa.bbbb
sourceSets {
main {
output.dir(generatedResources, builtBy: 'xsd2java')
java {
srcDir "$generatedResources"
}
}
}
问候, 维克拉姆帕塔尼亚