Я новичок в мире Java и Gradle. Я сделал библиотеку JSerial, которая будет поддерживать несколько платформ (Android, Linux и Windows).
Чтобы иметь возможность выбрать платформу, на которую я нацелен, я определил несколько sourceSets в моем файле JSerial gradle:
sourceSets {
windows {
compileClasspath += sourceSets.main.output
runtimeClasspath += sourceSets.main.output
}
linux {
compileClasspath += sourceSets.main.output
runtimeClasspath += sourceSets.main.output
}
}
dependencies {
linuxCompile 'net.java.dev.jna:jna:4.1.0'
linuxCompile 'net.java.dev.jna:jna-platform:4.1.0'
windowsCompile 'net.java.dev.jna:jna:4.1.0'
windowsCompile 'net.java.dev.jna:jna-platform:4.1.0'
}
main
sourceSet по умолчанию создает общий интерфейс и т. Д. Затем windows
sourceSet создает реализацию Windows (то же самое для Linux и Android).
Я создаю проект, который использует эту библиотеку и зависит от нее с помощью gradle includeFlat
. Вот часть зависимости моего файла gradle:
dependencies {
compile project(':JSerial')
testCompile group: 'junit', name: 'junit', version: '4.11'
}
Это работает. Но я хотел бы полагаться на исходный набор "windows", потому что этот проект является приложением Windows. Я пробовал следующее:
dependencies {
compile project(':JSerial').sourceSets.windows.output
testCompile group: 'junit', name: 'junit', version: '4.11'
}
Но не работает, у меня следующая ошибка:
Не удалось найти свойство "окна" в контейнере SourceSet.
Что случилось ?
PS: Если есть лучший способ сделать то, что я пытаюсь, без использования sourceSets, скажите мне!
project(path: ':Jserial', configuration: 'customConfig')
, но пока не работает. - person Thibaut D.   schedule 02.09.2015