2016-07-09 3 views
0

Es ist mir gelungen, Klassen der Abfrageklasse (.java) mit Gradle zu generieren, sie werden jedoch standardmäßig zusammen mit kompilierten Klassen nach build/classes/main verschoben. Wie würde ich sie nach src/main/java verschieben, damit ich sie zur Kompilierzeit referenzieren kann?Wie generierte Abfragetypklassen vor dem Kompilieren in Gradle verschoben werden?

Hier ist mein Gradle Skript bauen:

buildscript { 
    repositories { 
     jcenter() 
    } 
    dependencies { 
     classpath("org.springframework.boot:spring-boot-gradle-plugin:1.3.6.RELEASE") 
    } 
} 

// Apply the java plugin to add support for Java 
apply plugin: 'java' 
apply plugin: 'eclipse' 
apply plugin: 'spring-boot' 

jar { 
    baseName = 'gs-serving-web-content' 
    version = '0.1.0' 
} 

// In this section you declare where to find the dependencies of your project 
repositories { 
    // Use 'jcenter' for resolving your dependencies. 
    // You can declare any Maven/Ivy/file repository here. 
    jcenter() 
} 

// In this section you declare the dependencies for your production and test code 
dependencies { 
    // The production code uses the SLF4J logging API at compile time 
    compile 'org.slf4j:slf4j-api:1.7.21' 
    compile 'org.springframework.boot:spring-boot-starter-web:1.3.6.RELEASE' 
    compile 'org.springframework.boot:spring-boot-starter-thymeleaf:1.3.6.RELEASE' 
    compile 'org.springframework.boot:spring-boot-starter-data-jpa:1.3.6.RELEASE' 
    compile 'mysql:mysql-connector-java:6.0.3' 
    compile 'com.querydsl:querydsl-jpa:4.1.3' 
    compile 'com.querydsl:querydsl-apt:4.1.3:jpa' 


    // Declare the dependency for your favourite test framework you want to use in your tests. 
    // TestNG is also supported by the Gradle Test task. Just change the 
    // testCompile dependency to testCompile 'org.testng:testng:6.8.1' and add 
    // 'test.useTestNG()' to your build script. 
    testCompile 'junit:junit:4.12' 
} 



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

bearbeiten

Per mein Kommentar - ich versuche generierten Klassen in das Verzeichnis src/erzeugt/java zu bewegen, und fügen Sie dann die Lage zu die Quellverzeichnisse, damit sie kompiliert werden können. Ich habe folgendes versucht, aber es nicht Verzeichnis noch keine Dateien erstellen:

sourceSets { 
    main { 
     java { 
      srcDirs = [ 'src/main/java' ] 
     } 
    } 
    generated { 
     java { 
      srcDirs = [ 'src/generated/java' ] 
     } 
    } 
} 
+1

Sie haben nicht wirklich das tun wollen. Handschriftliche Quellen und generierte Quellen sollten nicht im selben Verzeichnis liegen. Fügen Sie stattdessen den Ort hinzu, an dem sich die generierten .java-Dateien befinden. – Henry

+0

Ok, aber jetzt generiert. Java-Dateien befinden sich mit kompilierten .class-Dateien im selben Verzeichnis - sollten sie nicht in einem separaten Verzeichnis, z. "src/generiert/Java"? Wenn ja, wie kann ich generierte Klassen in ein anderes Verzeichnis verschieben und dann zum Quellspeicherort in Gradle hinzufügen, damit alle kompiliert werden? Ich habe die Frage mit dem Code-Snippet aktualisiert. – fuudge

Antwort

1

Dies ist der Teil, den Sie fehlen:

compileJava { 
    options.compilerArgs << "-s" 
    options.compilerArgs << "$projectDir/generated/java" 

    doFirst { 
     // make sure that directory exists 
     file(new File(projectDir, "/generated/java")).mkdirs() 
    } 
} 

clean.doLast { 
    // clean-up directory when necessary 
    file(new File(projectDir, "/generated")).deleteDir() 
} 
Verwandte Themen