[JAVA] Gradle-Einstellungsnotiz (Multiprojekt für alle in einem) für mich

Gradle 5.4.1

tree.


├─sub
│  ├─sub-sample1
│  │  └─src
│  │      ├─main
│  │      │  ├─java
│  │      │  │  └─sample
│  │      │  │      └─subs
│  │      │  │              Sub1.java
│  │      │  │
│  │      │  └─resources
│  │      │       └─subs
│  │      │               subSample1.txt
│  │      └─test
│  │          ├─java
│  │          └─resources
│  └─sub-sample1
│      └─src
│          ├─main
│          │  ├─java
│          │  │  └─sample
│          │  │      └─subs
│          │  │              Sub2.java
│          │  │
│          │  └─resources
│          │      └─subs
│          │              subSample2.txt
│          │
│          └─test
│              ├─java
│              └─resources
└─src
    ├─main
    │  ├─java
    │  │      Main.java
    │  │
    │  └─resources
    │          sample.txt
    │
    └─test
        ├─java
        └─resources

build.gradle


allprojects {
    apply plugin: 'java'
    group 'sample'
    version '1.0-SNAPSHOT'
    sourceCompatibility = 1.8
    targetCompatibility = 1.8
    compileJava.options.encoding = 'UTF-8'
    repositories { mavenCentral() }
    dependencies { testCompile group: 'junit', name: 'junit', version: '4.12' }
}

dependencies { 
    compile project(':sub:sub-sample1')
    compile project(':sub:sub-sample2')
}

def mainProjects = [':sub:sub-sample1', ':sub:sub-sample2']
task allInJar(type:Jar, dependsOn: mainProjects.collect({ it+':compileJava' })){
    dependsOn build
    baseName = rootProject.name
    manifest.attributes 'Main-Class': 'Main'
    def javaSubDir = "/classes/java/main"
    def resourcesSubDir = "/resources/main"
    from(buildDir.path + javaSubDir,
            files(mainProjects.collect{ project(it).buildDir.path + javaSubDir }))
    from(buildDir.path + resourcesSubDir,
            files(mainProjects.collect{ project(it).buildDir.path + resourcesSubDir }))
}

Laufen Sie mit gradlew all In Jar. task:build << allInJar

jar.


│  Main.class
│  sample.txt
│
├─subs
│      sample1.txt
│      sample2.txt
│
├─META-INF
│      MANIFEST.MF
│
└─sample
    └─subs
            Sub1.class
            Sub2.class

Referenz; Gründliche Einführung in Gradle Aufbau einer Automatisierungsplattform mit Build-Tools der nächsten Generation (geschrieben von Takuma Watabiki, Nobuhiro Sue, Masatoshi Hayashi und Katsunobu Imai) Java - Kann ich mehrere Projekte in einer JAR-Datei zusammenfassen?

Recommended Posts

Gradle-Einstellungsnotiz (Multiprojekt für alle in einem) für mich
Eclipse Pleiades All in One für Mac
Gradle-Einstellungen für die Verwendung von JUnit 5
Spring Boot 2 Multiprojekt mit Gradle
Was ist schließlich Objektorientierung oder nur eine Sache, auf die Sie bei der Programmierung achten müssen?
Richten Sie in IntelliJ ein Gradle-Multiprojekt ein, um eine JAR-Datei zu erstellen
Gradle TIPS-Sammlung (für mich)
Eclipse alles in einer Installation
Wie man Ant in Gradle ausführt
Erstellen Sie mit Gradle eine ausführbare JAR für mehrere Projekte
Docker-Ausführungsnotiz für mich zusammengestellt
Einstellungen für das SSL-Debugging in Java
Ein Liner zum Löschen aller Docker-Bilder
Einstellungen für den Verbindungspool in Tomcat.jdbc
So filtern Sie den JUnit-Test in Gradle
Einstellungen zum lokalen Ausführen von CGI-Programmen (für mich selbst)
Konfigurieren Sie ein Multiprojekt mit Unterverzeichnissen in Gradle
Memo für die Migration von Java nach Kotlin
Englische Übersetzung von Pleiades All in One
[Für Anfänger] So debuggen Sie mit Eclipse
Für meinen Sohn, der angefangen hat, Java mit "Einführung in Java" in einer Hand zu studieren