Итак, у меня есть XJC javaExec, который вращается как верх, но IntelliJ не распознает сгенерированный вывод, несмотря на то, что он помечает generated-src/java
как таковой. Нужно ли мне настроить плагин идеи или что-то еще?Как я могу получить IntelliJ для распознавания источников сгенерированных источников?
Примечание: сам подключаемый модуль загружается в подпроекты от корня build.gradle
.
XJC Проект:
description = "Generates sources and compiles them into a Jar for $project"
configurations { xjc }
dependencies {
xjc 'org.glassfish.jaxb:jaxb-xjc:2.2.11'
xjc 'org.glassfish.jaxb:jaxb-runtime:2.2.11'
}
task xjc (type:JavaExec) {
doFirst{
File generatedSrcDir = file("$buildDir/generated-src/java")
if (!generatedSrcDir.exists()) {
generatedSrcDir.mkdirs()
}
}
main = "com.sun.tools.xjc.XJCFacade"
classpath configurations.xjc
def argsList = [
"-mark-generated",
"-no-header",
"-verbose", // or -quiet or nothing for default.
"-target", "2.1",
"-encoding", "UTF-8",
"-d", "$buildDir/generated-src/java",
"-catalog","$projectDir/src/main/resources/commons-gradle.cat",
file("$projectDir/src/main/resources/v1/") ]
args argsList
inputs.files files(file("$projectDir/src/main/resources/v1/"))
outputs.files files(file("$buildDir/generated-src/java"),file("$buildDir/classes"))
}
compileJava {
dependsOn xjc
source "${buildDir}/generated-src"
}
В проекте, который зависит от этого одного я просто:
compile project(":path:to:schemas:the-test-schema")
Я попытался:
idea {
module {
def buildDir = file("$buildDir")
def generatedDir = file("$buildDir/generated-src")
def listOfDirs = []
buildDir.eachDir { file ->
if (file.name != buildDir.name && file.name != generatedDir.name)
listOfDirs.add(file)
}
excludeDirs = listOfDirs.toArray()
generatedSourceDirs += file("$buildDir/generated-src/java")
scopes.COMPILE.plus += [ configurations.xjc ]
}
}
вы можете попробовать добавить идею Gradle плагина и возможно манипулировать классы проекта, что идея использует? – RaGe
Мой плохой. Это добавляется в subProjects. – user447607
Я чувствую ошибку. ... может быть, больше одного. Вот почему. В сгенерированной документации я могу найти ссылку на другие элементы, но не сгенерироватьSourceDirs. Если я использую sourceDirs + = ..., он отлично работает. Подозреваю, что каким-то образом сгенерированныйSourceDirs не попал в сборку. – user447607