Цикл в задаче Gradle из-за плагинов
Окружающая среда:
- СДК 17
- Грейдл 7.4.2
- org.moditect.gradleplugin 1.0.0-rc.3
- com.github.gmazzo.buildconfig 3.0.3
Я пытаюсь использовать jPackager для создания образов приложений. Я столкнулся с тем, что jPackager не справляется с пакетами, которые «просто» определяют имя автоматического модуля. Поэтому я хочу использовать Moditect для изменения зависимостей, чтобы избежать их свойства автоматического имени модуля. Кажется, это работает довольно хорошо. Однако я получаю круговую зависимость в Gradle, как только включаю
buildconfig
плагин заодно.
FAILURE: Build failed with an exception.
* What went wrong:
Circular dependency between the following tasks:
:addDependenciesModuleInfo
+--- :generateModuleInfo
| \--- :jar
| \--- :classes
| \--- :compileJava
| \--- :addDependenciesModuleInfo (*)
\--- :jar (*)
(*) - details omitted (listed previously)
Есть ли способ сломать / избежать этой циклической зависимости или нет другого способа, кроме как выбрать другие плагины?
import java.time.LocalDate
plugins {
id 'application'
id 'distribution'
id 'java'
id 'com.github.gmazzo.buildconfig' version "3.0.3"
id 'org.openjfx.javafxplugin' version '0.0.11'
id "org.panteleyev.jpackageplugin" version "1.3.1"
id "org.moditect.gradleplugin" version "1.0.0-rc3" // FIXME Creates circular dependency with buildconfig
}
group 'bayern.steinbrecher'
version '0.1'
repositories {
mavenCentral()
maven {
url "https://oss.sonatype.org/content/repositories/snapshots"
}
}
sourceCompatibility = 17
targetCompatibility = 17
dependencies {
implementation "bayern.steinbrecher:CheckedElements:0.13-rc.10-SNAPSHOT"
implementation "bayern.steinbrecher:JavaUtility:0.18"
implementation 'bayern.steinbrecher:ScreenSwitcher:0.2.4'
implementation 'com.itextpdf:kernel:7.1.17'
implementation 'com.itextpdf:io:7.1.17'
implementation 'com.itextpdf:layout:7.1.17'
implementation 'org.jetbrains:annotations:22.0.0'
}
run {
main = "$moduleName/bayern.steinbrecher.woodpacker.WoodPacker"
}
buildConfig {
buildConfigField("String", "APP_NAME", "\"${project.name}\"")
buildConfigField("String", "APP_VERSION", "\"${project.version}\"")
buildConfigField("String", "APP_VERSION_NICKNAME", "\"Das Alpha-Tier\"")
buildConfigField("long", "BUILD_TIME", "${System.currentTimeMillis()}L")
packageName("bayern.steinbrecher.woodpacker")
}
tasks.register("copyInstallerDeps", Copy) {
from(configurations.runtimeClasspath)
into("$buildDir/installer/files")
}
tasks.register("copyInstallerJars", Copy) {
from(tasks.jar)
into("$buildDir/installer/files")
}
tasks.jpackage {
dependsOn("build", "copyInstallerDeps", "copyInstallerJars")
appName = "\"${project.name}\""
appVersion = "\"${project.version}\""
vendor = "StoneSoft"
copyright = "Copyright (c) ${LocalDate.now().getYear()} $vendor"
module = "$run.main"
modulePaths = file("$buildDir/installer/files").listFiles() as List<String>
destination = "$buildDir/installer"
windows {
icon = "imageTemplates/logo.ico"
winDirChooser = true
winMenu = true
}
}