gpt4 book ai didi

java - Gradle:为每个平台构建包含 Flat 和 sourceSets 依赖项

转载 作者:行者123 更新时间:2023-11-30 10:58:13 24 4
gpt4 key购买 nike

我是 Java 世界和 Gradle 的新手。我制作了一个支持多个平台(Android、Linux 和 Windows)的 JSerial 库。

为了能够选择我的目标平台,我在我的 JSerial gradle 文件中定义了一些 sourceSets:

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 sourceSets 构建公共(public)界面等。然后 windows sourceSet 将构建 windows 实现(Linux 和 Android 也是如此)。

我创建了一个使用这个库的项目,并使用 gradle 的 includeFlat 依赖它。这是我的 gradle 文件的依赖部分:

dependencies {
compile project(':JSerial')
testCompile group: 'junit', name: 'junit', version: '4.11'
}

这行得通。但我想依赖于“windows”sourceSet,因为这个项目是一个windows应用程序。我尝试了以下方法:

dependencies {
compile project(':JSerial').sourceSets.windows.output
testCompile group: 'junit', name: 'junit', version: '4.11'
}

但它不起作用,我有以下错误:

Could not find property 'windows' on SourceSet container.

怎么了?

PS:如果有更好的方法可以在不使用 sourceSets 的情况下完成我正在尝试的操作,请告诉我!

最佳答案

我终于找到了一个我认为很优雅的解决方案。我没有使用 sourceSets,而是使用了多项目。这是我的项目:

Serial/
build.gradle
src/main/java/com.package/
SerialPort.java
windows/
build.gradle
src/main/java/com.package/
SerialPortWindows.java

Application/
build.gradle
settings.gradle

在我的 Applicationsettings.gradle 中:

includeFlat 'Serial'
includeFlat 'Serial/windows'

在我的 Applicationbuild.gradle 中:

dependencies {
project(':Serial/windows')
}

在我的Serial/windowsbuild.gradle中(需要SerialPort接口(interface)来编译):

dependencies {
project(':Serial')
}

然后当我构建我的应用程序时,它需要 Serial/windows,这需要 Serial。我想我将能够为我的应用程序定义多个 build.gradle 文件(例如一个用于 Linux,一个用于 Windows),具有不同的依赖关系。

关于java - Gradle:为每个平台构建包含 Flat 和 sourceSets 依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32347857/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com