2017-11-27 3 views
1

Ich habe ein Großprojekt. Dieses Projekt enthält viele Module. Ich möchte 2 differents ausführbare Dateien mit einigen Modulen aktiviert oder nicht. Ich habe eine ausführbare Datei mit module1 und module2 wie folgt:Kompilieren Gradle mit zwei Konfigurationen

dependencies { 
    compile project(':module1') 
    compile project(':module2') 
} 

ich eine ausführbare Datei mit module1 und module2 möchte, und eine andere mit nur module1.

Zum Generieren einer ausführbaren Datei habe ich launch4j und shadowjar verwendet.

Wie kann ich das tun?

Dank

+0

mit einem einzigen Großbuchstaben Befehl? – LazerBanana

+0

Ja, mit einer einzigen Aufgabe. – Barthos33

Antwort

2

Sie vielleicht meinen java-flavours-plugin

plugins { 
    id "com.lazan.javaflavours" version "1.2" 
} 
javaFlavours { 
    flavour 'version1' 
    flavour 'version2' 
} 
dependencies { 
    compile 'some:common-dependency:1.0' 
    version1Compile project(':module1') 
    version2Compile project(':module2') 
} 

Jeden Geschmack (zB version1 & version2) müssen verwenden könnten ein Glas Aufgabe könnte das Glas durch nachgeschaltete Module/Aufgaben verbraucht werden. Sie können auch auf sourceSets.version1.runtimeClasspath usw. verweisen.

Hinweis: Das Plugin unterstützt geschmackspezifische Java-Quellen und -Ressourcen. Nicht sicher, ob Sie diese Funktion benötigen.

+0

Zustimmen, vorher würden wir nur eine weitere jar-Aufgabe erstellen und nur 2 Artefakte ausspucken. – LazerBanana

+1

Wenn es keine geschmacksspezifischen Quellen/Ressourcen gibt, sollten die Gläser genau gleich sein, es sind die transitiven Abhängigkeiten, die unterschiedlich sein werden. –

+0

Wenn ich Ihren Code hinzufügen, habe ich die folgende Fehlermeldung: Methode Version1Compile() für Argumente gefunden [ Projekt ': Modul1'] auf Projekt Ich verstehe nicht wirklich, wie ich meine Aufgabe erstellen kann? Aufgabe version1Compile() { sourceSets.version1.runtimeClasspath Aufgaben = [ 'launch4j'] } – Barthos33

Verwandte Themen