当前位置: 首页 > 知识库问答 >
问题:

gradle中的任务在编译前包含java类

谢俊悟
2023-03-14

我需要创建Gradle任务,它可以在Gradle构建之前替换.java文件。分级在.war文件中构建包应用程序。我需要在构建后替换字节码。我试过sourceSets Gradle任务,但它只能排除文件。

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

但我需要在同一地方也包括文件。我怎么能和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
  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
    }
sourceSets {
    main {
        java {
            srcDir "$projectDir"

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

            include 'src/main/webapp/WEB-INF/my/ResourceBundleImpl.java'
        }
    }

共有1个答案

薛宜
2023-03-14

我将需要替换的类放在一起,并为其中一个类添加后缀,并在编译期间替换这个后缀:

   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"
    }
 类似资料:
  • 我有一个jar,build-plugins.jar和一个gradle插件,它是用build.gradle中的这个插件构建的: 这将构建build-plugins.jar。并且使用插件的项目按文件引用插件jar 问题是当我运行第二个项目的任何任务时,我得到的是“class proxy created for class XYZ”,根本原因是四个依赖项(joda-time、commons-io、str

  • 我有一个非常简单的构建。gradle文件包含以下内容: 我想要的是在java编译开始之前运行generateSources任务。我找到了几种解决方法,比如compileJava。dependsOn(“generateSources”),但不幸的是,它们给出了一个错误: 我不认识Gradle,也不明白这个代码出了什么问题。所以我想知道如何修复这个错误。

  • 我试图在一个用Java编写的自定义Gradle插件中配置测试任务。 在中应用我需要的插件: 我可以像那样通过命令行成功地编译代码 但是,IntelliJ在以下代码中抱怨: 道: 分级版本:6.7.1 Intellij:2020.2.3

  • 我有一个通过JAXB完成从XSD到java代码生成的分级任务。但是代码生成需要一个手工的注释类(写在Kotlin上),放在项目的源目录中。在代码生成任务之前,我如何编译并放入类路径中一个这个文件? 在gradle项目中我有这样的台词: 所以在我作为param configurations.jaxb.aspath传递的代码生成任务中,我建议必须在这个类路径中包含已编译的类

  • 我下载了一个名为PDFCLOWN的开源项目。运行它的样本,它似乎运行得很好。 谢谢! 只需提及一下,这个项目使用ant,这意味着编译过程不是由用户直接运行的,而是使用build.xml文件运行的。

  • 问题内容: 好吧,标题是不言而喻的。我在编译有很多注释行的项目时想知道这一点。这有点愚蠢,因为jar文件不会增加太多(某些字节),但是我很好奇这是否会影响带有大量代码和注释的程序。 谢谢 问题答案: 它不会影响执行或性能(除非您注释了错误的语句:-) 但这 绝对 会影响可读性。没有理由(在生产中)使用大量注释掉的代码,版本控制是必经之路 另请参阅 此问题。 问题结束。