Mar*_* S. 3 java ant eclipselink gradle
我想从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>
Run Code Online (Sandbox Code Playgroud)
现在我有两个问题:
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) {
}
}
Run Code Online (Sandbox Code Playgroud)
但问题是类路径似乎不起作用ant.weave(..).编织过程在消息输入后中止:
Execution failed for task ':eclipseWeave'.
> java.lang.NoClassDefFoundError: some/class/from/my/dependencies
Run Code Online (Sandbox Code Playgroud)
类路径设置适用ant.taskdef(..)于我的依赖项中的StaticWeaveAntTask.我怎样才能让它适用于ant.weave(..)自己?
2.如何将其集成到我的构建中,以便在每个compileJava步骤后自动执行?
我知道这是一个老问题,但根据OP对"gradle"方式的评论,我认为我会分享我们的方法.我们正在使用JavaExec任务和各种可用的配置对象.
由于编织是在classes目录中完成的(在构建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.compile
}
tasks.withType(Jar){
dependsOn "performJPAWeaving"
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2252 次 |
| 最近记录: |