Цикл в задаче 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
    }
}

0 ответов

Другие вопросы по тегам