2014-09-18 3 views
1

У меня странный сценарий, когда Gradle кажется, что он пытается скомпилировать файлы «.java», расположенные внутри файлов jar, которые я задал в качестве зависимостей. Я делаю что-то вроде этого:Gradle компиляция .java внутри файлов jar?

dependencies { 
    testCompile fileTree(dir: './libs', include: ['*JarResources/Java/*.jar']) 
    testCompile group: 'junit', name: 'junit', version: '4.11' 
} 

... и у меня есть довольно большой список флагов. Когда я пытаюсь запустить свои тесты, он не работает на этапе компиляции, где он не может найти символы для файлов Java, заправленных внутри файлов jar. Некоторые из этих jar-зависимостей упакованы вместе со своим источником, сидящим рядом с соответствующим .class. Я попытался использовать фильтр включения в моем исходном наборе безрезультатно.

sourceSets { 
    main { 
     java { 
      exclude 'com/mypkg/other/**' 
     } 
    } 
    test { 
     java { 
      include 'com/mypkg/test/**' 
     } 
    } 
} 

Я могу запустить тесты в IntelliJ 13, используя его Gradle-Aware макияж без проблем (здесь я правой кнопкой мыши на юнит-тесты и запускать их), поскольку это достаточно умен, чтобы построить путь класса зависимость без прохождения файлы в Javac, но как-то то же самое build.gradle терпит неудачу из командной строки. Является ли это известной проблемой, когда Gradle автоматически передает зависимости javac, когда находит их в файлах Jar?

ответ

2

То, что вы видите, является поведением Java-компилятора по умолчанию (путь к исходному файлу по умолчанию относится к пути к файлу, файлы по исходному пути компилируются). Один выход должен явно указать исходный путь к «ничего»:

tasks.withType(JavaCompile) { 
    options.compilerArgs += ["-sourcepath", "''"] 
} 

PS: Не все инструменты/Иды может иметь дело с источниками в банках, так что в целом лучше, чтобы поместить их в отдельные источники Jar.

+0

Спасибо тонну !!! Ты спас мой бекон этим советом! К сожалению, у меня нет возможности изменять структуру зависимостей. Это один из тех сценариев «это было так, когда я получил это». Я бы не нашел выход из этого на какое-то время! – Cliff

Смежные вопросы