2017-10-06 3 views
2

ich Sie über eine sehr grundlegende Frage zu stellen, aber ich hoffe, dass Sie sich die Zeit, mir zu helfen finden:Gradle - ein Projekt, mehrere Pakete, mehrere Gläser

Ich versuche, ein Java-Projekt zu realisieren, Das kann verschiedene Programme ausspucken, die teilweise von anderen Projekten abhängig sind.

Um es einfach zu halten, möchte ich den gesamten Code in einem Projekt haben, ausgeführt von Gradle, also wenn ich Änderungen an einer zentralen Bibliothek (zum Beispiel dem Datenbankkonnektor) mache, erhalten alle untergeordneten Programme automatisch die Änderungen.

Ein Beispiel könnte wie folgt aussehen:

Projekt:

  • program_A
  • central_library
  • program_B

Ausgang:

  • program_A.jar (einschließlich Zentralbibliothek)
  • program_B.jar (einschließlich Zentralbibliothek)

nun eine korrekte buildscript für diese ernsthafte Probleme zu finden und frage mich, ob hier jemand helfen könnte mich Ich habe aus .

P.S. : Da ich neu bin, wenn ich dies durch verschiedene Module innerhalb des Gradleproject anstelle von verschiedenen Paketen in der Gradeleprojects-Quelldatei realisieren sollte, können Sie mir das gerne sagen :)

Antwort

0

Erstellen Sie ein Stammverzeichnis und legen Sie jede Bibliothek oder Programm in ein eigenes Unterverzeichnis. Erstellen Sie in jedem Teilprojekt ein Gradle-Projekt. Sie können zum Beispiel ein Skelett gradle Projekt erstellen, indem

gradle init --type=java-library 

oder

läuft
gradle init --type=java-application 

dann im Stammverzeichnis ein gradle Multi-Modul-Projekt erstellen. Grundsätzlich laufen nur

gradle init 

und dann eine settings.gradle erstellen und eine Liste aller Teilprojekte gibt.

Dies ist eigentlich sehr gut in der gradle Dokumentation beschrieben:

0

Wenn ich es richtig verstehe, was Sie tun möchten, ist, wenn Sie Ihre Projekte vor Ort ändern, Sie andere Projekte wollen, dass diese Details zu sehen. Dazu müssen Sie Ihre Projekte in einer Art Repo veröffentlichen, wie zum Beispiel maven repo. Sie können dies über die Befehlszeile gradle publishToMavenLocal oder gradle build pTMl tun.

task sourceJar (type : Jar) { 
     classifier = constants.extSources 
     from sourceSets.main.allSource 
    } 

    publications { 
     mavenJava(MavenPublication) { 
      from components.java 
      artifact(sourceJar) { 
       classifier "sources" //classifier = constants.extSources 
      } 
     } 
    } 
0

Ein Weg, um diesen Ansatz ist ein Root-Projekt zu haben, die die drei anderen Projekten in der es gilt: Sie können dies auch mit so etwas wie die folgenden in build.gradle Datei tun.

innerhalb seiner settings.gradle Datei, die die Teilprojekte angeben:

rootProject.name = 'RootProject' 
include 'program_A' 
include 'central_library' 
include 'program_B' 

In diesem Ort, program_a kann durch Hinzufügen einer Abhängigkeit in seiner build.gradle auf central_library abhängen:

dependencies { 
    compile project(':central_library') 
} 

habe ich eine ähnliche Setup in einem der my projects, obwohl die "zentrale Bibliothek" ist das Stammprojekt und die Submodule sind Testumgebungen.

Verwandte Themen