Как автоматически создать подпроект при построении основного проекта? - PullRequest
1 голос
/ 04 марта 2020

Я работаю с Apache Netbeans IDE и использую Gradle в качестве системы сборки для моего Java приложения. Мой проект состоит из основного проекта, содержащего некоторый код GUI и проект под-библиотеки.

Я хочу, чтобы мой проект под-библиотеки автоматически компилировался при сборке моего основного проекта. Какой самый простой способ добиться этого?

Вот файл gradle моего основного проекта:

apply plugin: 'java'
apply plugin: 'jacoco'
apply plugin: 'application'

mainClassName = 'ch.minibot32.Launcher'

repositories {
    jcenter()
    mavenLocal()
    mavenCentral()
}

dependencies {
    implementation files('../MiniBot32Lib/build/libs/MiniBot32Lib.jar')
    compile 'uk.co.electronstudio.sdl2gdx:sdl2gdx:1.0.+'
    compile 'com.glazedlists:glazedlists:1.11.0'
    compile 'commons-io:commons-io:2.6'
    compile 'commons-net:commons-net:3.6'
    compile 'org.apache.commons:commons-math3:3.6.1'
    compile 'org.apache.commons:commons-lang3:3.9'
    compile 'joda-time:joda-time:2.10.5'
    testCompile 'junit:junit:4.12'
}

sourceSets {
    main {
        resources {
            srcDir 'res'
        }
    }
}


jar {
    manifest {
        attributes 'Main-Class': 'ch.minibot32.Launcher'
    }
    from {
        configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
    }
}

task createFatJar(type: Jar) {
    manifest {
        attributes 'Main-Class': 'ch.minibot32.Launcher'
    }
    baseName = 'MiniBot32-Release'
    from { 
        configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
    }
    with jar
}

Вот файл gradle моего проекта суббиблиотеки:

apply plugin: 'java'
apply plugin: 'jacoco'
apply plugin: 'maven'

repositories {
    jcenter()
    mavenLocal()
    mavenCentral()
}

dependencies {
    compile 'commons-io:commons-io:2.6'
    compile 'commons-net:commons-net:3.6'
    compile 'org.apache.commons:commons-math3:3.6.1'
    compile 'org.apache.commons:commons-lang3:3.9'
    compile 'joda-time:joda-time:2.10.5'
    testCompile 'junit:junit:4.12'
}

jar {
    from configurations.compile.collect { zipTree it }
}

Обновление A

При использовании предполагаемой команды от Eng.Fouad я получаю следующую ошибку:

> Project with path ':MiniBot32Lib' could not be found in root project 'MiniBot32'.

Моя иерархия папок выглядит следующим образом:

Netbeans_Projects
 |_ MiniBot32           <- Main Project          
 |   |_ build
 |   |_ src
 |   |_ build.gradle
 |   |_ settings.gradle
 |_ MiniBot32Lib        <- Sub Project
     |_ build
     |_ src
     |_ build.gradle
     |_ settings.gradle

Обновление B

Кроме того, после определения rootProject мне пришлось добавить следующее к settings.gradle:

include ':MiniBot32Lib'
project(':MiniBot32Lib').projectDir = new File('../MiniBot32Lib')

Спасибо Eng.Fouad!

1 Ответ

1 голос
/ 06 марта 2020

Просто замените:

implementation files('../MiniBot32Lib/build/libs/MiniBot32Lib.jar')

на

implementation project(":MiniBot32Lib")

, что делает подпроект зависимостью, которая строится при построении основного проекта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...