gpt4 book ai didi

java - 如何从 Gradle 启用 Eclipselink 的静态编织

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:55:53 25 4
gpt4 key购买 nike

我想从 Gradle 为我的 JPA 类启用 Eclipselink 的静态编织。 Eclipselink 文档解释了如何在 Ant 任务中执行此操作:

<target name="define.task" description="New task definition for EclipseLink static weaving"/>

<taskdef name="weave" classname="org.eclipse.persistence.tools.weaving.jpa.StaticWeaveAntTask"/>
</target>
<target name="weaving" description="perform weaving" depends="define.task">
<weave source="c:\myjar.jar"
target="c:\wovenmyjar.jar"
persistenceinfo="c:\myjar-containing-persistenceinfo.jar">
<classpath>
<pathelement path="c:\myjar-dependent.jar"/>
</classpath>

</weave>
</target>

现在我有两个问题:

<强>1。我如何将其“转化”为 Gradle 方法?我试过这个(基于 http://www.gradle.org/docs/current/userguide/ant.html#N1143F 的文档):

task eclipseWeave << {
ant.taskdef(name: "weave",
classname: "org.eclipse.persistence.tools.weaving.jpa.StaticWeaveAntTask",
classpath: configurations.compile.asPath)

ant.weave(source: relativePath(compileJava.destinationDir),
target: relativePath(compileJava.destinationDir),
persistenceinfo: relativePath(processResources.destinationDir) {
}
}

但问题是类路径似乎在 ant.weave(..) 中不起作用。编织过程在消息出现后中止:

Execution failed for task ':eclipseWeave'.
> java.lang.NoClassDefFoundError: some/class/from/my/dependencies

类路径设置适用于 ant.taskdef(..),因为在我的依赖项中找到了 StaticWeaveAntTask。我怎样才能让它应用于 ant.weave(..) 本身?

<强>2。我如何将它集成到我的构建中,以便它在每个 compileJava 步骤后自动执行?

最佳答案

我知道这是一个老问题,但根据 OP 对“渐变”方式的评论,我想我会分享我们的方法。我们正在使用 JavaExec 任务和各种可用的配置对象。

由于编织是在类目录中完成的(在构建 JAR 之前),您最终只需构建一个 jar,而不是两个。由于我们的 jar 很大,这对我们很重要。

task performJPAWeaving(type: JavaExec, dependsOn: "compileJava"){
inputs.dir compileJava.destinationDir
outputs.dir compileJava.destinationDir
main "org.eclipse.persistence.tools.weaving.jpa.StaticWeave"
args "-persistenceinfo",
"src/main/resources",
compileJava.destinationDir.getAbsolutePath()
classpath = configurations.compileClasspath
}

tasks.withType(Jar){
dependsOn "performJPAWeaving"
}

关于java - 如何从 Gradle 启用 Eclipselink 的静态编织,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22997757/

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