我想为 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 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(..)
itself?
2.如何将其集成到我的构建中,以便它在每次之后自动执行compileJava
step?