gpt4 book ai didi

Grails:为编译添加构建任务

转载 作者:行者123 更新时间:2023-12-02 16:01:30 25 4
gpt4 key购买 nike

我正在使用 grails 2.4.4。
我的一些类是带注释的,APT(注释处理工具)必须在编译期间处理这些注释以生成一些源。

通过运行 grails generate-pom,我能够通过创建 maven pom.xml 的解决方法完成所有工作。并从那里添加特定的插件并配置它们。

是否可以使用内置的 grails 编译器配置 BuildConfig.groovy通过 maven pom.xml 无需绕道而达到相同的目标?

更具体地说,我正在使用 AWS SWF 创建一个工作流。 SWF 使用应该生成一些客户端类的注释。因此在 pom.xml 我添加了这个。当我运行 mvn compile 时,它工作得很好:

<build>
...
<plugin>
<groupId>com.mysema.maven</groupId>
<artifactId>apt-maven-plugin</artifactId>
<version>1.1.3</version>
<executions>
<execution>
<goals>
<goal>process</goal>
</goals>
<configuration>
<outputDirectory>src/generated</outputDirectory>
<processor>com.amazonaws.eclipse.simpleworkflow.asynchrony.annotationprocessor.AsynchronyDeciderAnnotationProcessor</processor>
</configuration>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk-flow-build-tools</artifactId>
<version>1.9.34</version>
</dependency>
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.21</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.3.2</version>
</dependency>
</dependencies>
</plugin>
...
</build>

最佳答案

我发现了自己如何在 grails 中实现它。
基本上,我创建了一个可以使用 grails 命令调用的脚本。这个脚本只不过是一个 gant可以用来干扰 ant 的脚本。另外,我必须将库添加到 libs grails 中的文件夹,以便将它们放在类路径中。

这些是步骤:

  • 创建一个新的 grails 脚本
    grails create-script generateSources这将在您的 grails 脚本目录
  • 中创建一个名为 GenerateSources.groovy 的脚本。
  • 编辑GenerateSources.groovy文件
    includeTargets << grailsScript("_GrailsCompile")
    target(generateSources: "Generates sources for SWF workflow") {
    ant.delete(dir:"src/generated/java")
    ant.delete(dir:"target/generated-classes")
    depends(compile)
    ant.mkdir(dir:"src/generated/java")
    ant.mkdir(dir:"target/generated-classes")
    ant.javac(destdir:"target/generated-classes", classpathref:"grails.compile.classpath", source:"1.7", target:"1.7"){
    compilerarg(value:"-proc:only")
    compilerarg(value:"-s")
    compilerarg(value:"src/generated/java")
    src(path:"src/java")
    }
    }
    setDefaultTarget(generateSources)

  • 这包括来自 GrailsCompile 脚本的引用和任务,删除一些文件夹(以防您重新运行此脚本),从 native grails gant 调用编译任务,创建必要的目标文件夹
  • 将必要的 jar 复制到 grails lib 文件夹。在我的情况下,我必须复制 aws-java-sdk-flow-build-tools-1.9.34.jar其中包括注释处理器和另一个依赖项freemarker-2.3.18.jar . Javac 将自动调用正确的 APT 以处理文件夹 src/java 中的注释。
  • 运行脚本grails generateSources这将运行编译任务和你的新任务

  • 打开:
    我想在调用 grails compile 时自动连接这个任务。我还在努力解决这个问题。

    关于Grails:为编译添加构建任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30235982/

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