Muszę utworzyć zadanie Gradle, które może zastąpić pliki .java przed kompilacją Gradle. Gradle buduje pakiet aplikacji w pliku .war. I muszę tam wymienić kod bajtowy po kompilacji. Wypróbowałem zadanie sourceSets Gradle, ale może ono tylko wykluczać pliki.

sourceSets {
        main {
            java {
                exclude 'com/myapp/example/resource/impl/ResourceBundleImpl.java'
            }
        }
    }

Ale muszę również dołączyć plik w tym samym miejscu. Jak mogę to zrobić z Gradle?

The directory to  file that I need to exclude: com/myapp/example/resource/impl/ResourceBundleImpl.java
The directory to file that I need to include: src/main/webapp/WEB-INF/my/ResourceBundleImpl.java

Możliwe jest również skopiowanie zawartości pliku, ale jak mogę to zrobić przed kompilacją?

Poniższe zadanie nie pomogło, ponieważ w pliku kompilacji znajdują się pliki .java zamiast pliku .classe.

  task prepareSources(type: Copy) {
        from('src/main/webapp/WEB-INF/my')
        into('build/classes/java/main/com/myapp/example/resource/impl')com/myapp/example
    }

// Prepare sources, before compile
    compileJava {
        dependsOn prepareSources
    }

Następujące zadanie wyświetla: Zadanie: cdx-war: compileJava FAILED błąd: pakiet com.myapp.example.util nie istnieje

sourceSets {
    main {
        java {
            srcDir "$projectDir"

            exclude 'com/medtronic/diabetes/carelink/rbps/resource/impl/ResourceBundleImpl.java'

            include 'src/main/webapp/WEB-INF/my/ResourceBundleImpl.java'
        }
    }
0
Олег Гаврилів 20 listopad 2019, 13:34

1 odpowiedź

Umieszczam klasy, które muszę zastąpić razem i dodaję sufiks do jednego z nich i zamieniam ten sufiks w czasie kompilacji:

   sourceSets {
        main {
            java {
                srcDirs = ["$buildDir\\generated-src"]
            }
        }
    }

    task copySourceSet(type: Copy) {

        println 'Change java class in patient-svc-war'

        from "$rootDir\\patient-svc-war\\src\\main\\java"
        into "$buildDir\\generated-src"

        from file("$rootDir\\patient-svc-war\\**_suffix.java")
        into "$buildDir\\generated-src"
        rename { String fileName ->
            fileName.replace("_suffix", "")
        }

        filter { line -> line.replaceAll('_suffix', '')}
    }

    compileJava.source "$buildDir\\generated-src"

    compileJava {
        dependsOn copySourceSet
    }

    compileJava.doLast {
        delete "$buildDir\\generated-src"
    }
0
marc_s 26 styczeń 2020, 14:27