我要做的是对scala构建的类文件执行java注释处理。
我可以在构建
之后通过调用javac手动执行此操作javac -cp ".../.m2/repository/net/java/sezpoz/sezpoz/1.11/sezpoz-1.11.jar:." \
-proc:only -processor net.java.sezpoz.impl.Indexer6 \
-verbose mypackage.ScalaUseMyAnnotations$Inner
但我希望将其作为gradle构建的一部分。最后,我希望这能够在Scala中创建Jenkins插件,并且需要使用sezpoz处理插件以进行源注释。因此使用Gradle。
这是我到目前为止所做的,但它不起作用
group 'mytest'
version '1.0-SNAPSHOT'
apply plugin: 'java'
apply plugin: 'scala'
sourceSets.main.scala.srcDir "src/main/java"
sourceSets.main.java.srcDirs = []
sourceCompatibility = 1.8
repositories {
mavenCentral()
}
jar {
from {
(configurations.runtime).collect {
it.isDirectory() ? it : zipTree(it)
}
}
manifest {
attributes 'Main-Class': 'mypackage.Main'
}
}
ext {
versions = [
scala : '2.11.8',
scalatest : '2.2.6'
]
}
task annotate (type: JavaCompile) {
source = sourceSets.main.output.classesDir
include 'mypackage.ScalaUseMyAnnotations$Inner'
classpath = sourceSets.main.compileClasspath
destinationDir = sourceSets.main.output.classesDir
outputs.upToDateWhen { false }
println("[annotate] ${sourceSets.main.output.classesDir}")
}
annotate.options.compilerArgs = ['-proc:only', '-processor', 'net.java.sezpoz.impl.Indexer62', '-verbose']
task run(type: JavaExec, dependsOn: compileScala) {
main = 'mypackage.Main'
classpath sourceSets.main.runtimeClasspath
classpath configurations.runtime
}
compileScala.doLast {
tasks.annotate
}
dependencies {
compile group: 'net.java.sezpoz', name: 'sezpoz', version: '1.11'
runtime group: 'org.scala-lang', name: 'scala-library', version: "$versions.scala"
compile group: 'org.scala-lang', name: 'scala-library', version: "$versions.scala"
}
问题是它似乎没有找到要对它们进行注释的类文件,它肯定是手动工作的,它总是认为任务是最新的。
这是repo,但Scala喜欢最近的Java8编译器
答案 0 :(得分:0)
所以这就是我经过多次思考后最终做的事情
var input = $('#input');
$('button[id^=type-]').on('click', function() {
var type = $(this).attr('id').replace('type-', '');
if (type === 'file') {
var newElement = document.createElement('input');
newElement.type = type;
newElement.id = input.attr('id');
input.replaceWith(newElement);
input = $('#input');
} else {
input.attr('type', type);
}
$('#debug-info').html(
'Trying to change the input type to <strong>' + type + '</strong>.<br>' +
'Actual input type is <strong>' + input.attr('type') + '<strong>.'
);
if (type == input.attr('type')) {
$('#debug-info').css('color', 'green');
} else {
$('#debug-info').css('color', 'red');
}
});
它可能不是很平常,我原本希望使用task annotate(dependsOn:compileScala, type: Exec) {
args '-proc:only'
args '-d'
args compileJava.destinationDir
args '-classpath'
args compileJava.classpath.getAsPath() + java.io.File.pathSeparatorChar + compileJava.destinationDir
if (logging.level >= LogLevel.INFO) {
args '-verbose'
}
doFirst{
fileTree(compileScala.destinationDir).each { File file ->
if(file.path.contains('-')) {
return
}
args file.path.minus(compileScala.destinationDir).minus('.class').substring(1).replaceAll(File.separator,'.')
}
}
executable "javac"
}
compileScala.doLast {annotate.execute()}
类型的任务。
主要问题是必须在没有.class扩展名的情况下传递类
我更新了github中的repo