2016-07-15 1 views
4

Ich habe folgende und dachte, es wurde ‚Hinzufügen‘ zu meinem sourceSet aber eigentlich ist es nur geändert ..Wie alle src/test/resources/** UND src/main/java/**/*. Html in den Test-Quellsatz in Gradle enthalten?

sourceSets { 
    test { 
     resources { 
      srcDirs = ["src/main/java"] 
      includes = ["**/*.html"] 
     } 
    } 
} 

Was ich wirklich will, ist sowohl src/test/resources/** und die auch oben. Ich will jedoch keine Dateien von src/test/resources ausschließen und das oben genannte schließt nur html von irgendwelchen Verzeichnissen ein, die ich dort anbringe.

Dank, Dean

+0

Try + = Operator statt Ebene = – Jk1

+0

@ jk1 Ich bin nicht sicher, ob ich undertsand . srcDirs + = ["src/main/java"] ... ok, aber wenn ich includes = ["**/*. html"] verwende, was andere Sachen in src/test/resources ausschließen würde, die ich verwenden möchte, Recht? Ich möchte auch nicht + = ["**/*. Html"] als das würde **/* + **/*. Html bedeuten, die nicht nützlich scheint, aber ich? –

+0

@ Jk1 vielleicht könnten Sie mit einem Beispiel obwohl erarbeiten? –

Antwort

2

Im Folgenden erläutern die Technik main (kann so überprüft werden):

apply plugin: 'java' 

sourceSets { 
    myExtra { 
     resources { 
      srcDirs "src/main/java" 
      includes = ["**/*.html"] 
     } 
    } 
    main { 
     resources { 
      source myExtra.resources 
     } 
    } 
} 

über die Befehlszeile Proof-of-Concept:

bash$ ls src/main/java 
abc.html 
xyz.txt 

bash$ ls src/main/resources/ 
def.html 
ijk.txt 

bash$ gradle clean jar 
bash$ jar tf build/libs/myexample.jar 
META-INF/ 
META-INF/MANIFEST.MF 
abc.html 
def.html 
ijk.txt 

Ändern Sie in Ihrem Fall main zu test. Diese Antwort wurde über die Gradle doc for SourceDirectorySet entdeckt. Interessanterweise für 3.0, enthält es eine ERLEDIGEN:

TODO - configure includes/schließt für einzelne Quelle dirs

die, dass diese Behelfslösung (via this method) impliziert ist wahrscheinlich notwendig.

+0

danke, funktioniert GROSS !!!! –

+0

grrrrrr, shucks @Michael Ostern, es schien gut zu funktionieren, aber brach den ./gradlew Eclipse-Befehl mit doppelten src/main/resources Einträge. Es hat fast funktioniert. Das Gradle-Plugin funktioniert immer noch, aber das Gradle-Plugin ist so kaputt, dass es nicht die Parameter-Parameter portiert, um sicherzustellen, dass Params in die Klassendateien kompiliert werden .... nur mein Glück :(Jedenfalls, sei vorsichtig, denn es kann dein anderes Zeug zerbrechen, bis die Gradlew-Finsternis behoben ist. –

1

Ich habe Ihren Standpunkt. Ich habe es versucht und es hat funktioniert. Bitte werfen Sie einen Blick darauf:

sourceSets { 
    test { 
     resources { 
      srcDirs = ["src/main/java"] 
      includes = ["**/*.html"] 
     } 
    } 
} 

sourceSets.test.resources.srcDir 'src/test/resources' 

Fügen Sie diese in build.gradle hinzu.

+0

Das funktioniert nicht –

+0

@VyacheslavShvets was ist der Fehler, den du bekommst? –

+0

Ich nehme das zurück Diese Lösung funktioniert NICHT so wie sie endet up nur einschließlich * .html Dateien von src/test/resources.Ich wollte src/test/resources/**** und src/main/java/**/*. html aber diese Lösung tut das nicht. –

0

Ich überlegte, ob ich diese Antwort posten sollte oder nicht. So dass, wenn Sie mit der vorherige Antwort nicht zufrieden sind, versuchen Sie den folgenden hacky Weg (wahrscheinlich wird es mit eclipse Befehl funktioniert):

apply plugin: 'java' 

ConfigurableFileTree.metaClass.getAsSource = { 
    def fileTrees = delegate.asFileTrees 
    fileTrees.metaClass.getSrcDirTrees = { 
    return delegate as Set 
    } 
    fileTrees as SourceDirectorySet 
} 

sourceSets { 
    main { 
    resources { 
     srcDirs = [] // cleanup first 
     source fileTree('src/main/java').include('**/*.html').asSource 
     source fileTree('src/main/resources').asSource 
    } 
    } 
} 
Verwandte Themen