2013-11-21 13 views
6

Używam gradle (v1.9) i IntelliJIdea (v12.1.6). Mam prosty projekt java i plik build.gradle. Jedna zależność nie ma znaczenia centralnego, więc umieściłem słoiki w folderze lib.Gradle: Dołącz źródło i javadoc do pliku lokalnego w IntelliJIdea

Problem

W zależności, które są na Maven centralny, Gradle buduje pliki xml bibliotecznych correcly z javadoc i źródła (znajduje się w $ projektu/.idea/biblioteki). W przypadku zależności lokalnej (JNativeHook) nie ma dołączonego takiego źródła lub javadoc. Dla porównania, pliki dwa xml:

Ze źródłem i przywiązania javadoc

<component name="libraryTable"> 
    <library name="jackson-core-2.2.3"> 
    <CLASSES> 
     <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.fasterxml.jackson.core/jackson-core/2.2.3/1a0113da2cab5f4c216b4e5e7c1dbfaa67087e14/jackson-core-2.2.3.jar!/" /> 
    </CLASSES> 
    <JAVADOC> 
     <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.fasterxml.jackson.core/jackson-core/2.2.3/6021971970a43ae0c22f378cfb5813af869caab/jackson-core-2.2.3-javadoc.jar!/" /> 
    </JAVADOC> 
    <SOURCES> 
     <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.fasterxml.jackson.core/jackson-core/2.2.3/b1c4a6c3c26dfc425efd53c00217868b60d07de9/jackson-core-2.2.3-sources.jar!/" /> 
    </SOURCES> 
    </library> 
</component> 

Bez źródła i przywiązania javadoc

<component name="libraryTable"> 
    <library name="JNativeHook-1.1.4"> 
    <CLASSES> 
     <root url="jar://$PROJECT_DIR$/lib/JNativeHook-1.1.4.jar!/" /> 
    </CLASSES> 
    <JAVADOC /> 
    <SOURCES /> 
    </library> 
</component> 

Dodatkowe informacje

plików build wygląda tak:

apply plugin: 'java' 
apply plugin: 'idea' 
idea { 
    module { 
     downloadJavadoc = true 
     downloadSources = true 
    } 
} 

repositories { 
    mavenCentral() 
    flatDir(dirs: 'lib') 
} 

dependencies { 
    // Will be fetched from mavenCentral() 
    compile 'com.fasterxml.jackson.core:jackson-core:2.2.3' 
    // Will be fetched from the 'lib' directory (see second repository) 
    compile 'org.jnativehook:JNativeHook:1.1.4' 
} 

sourceCompatibility = 1.7 
version = '0.1' 
jar { 
    manifest { 
     attributes 'Implementation-Title': 'ScreenShotter', 
        'Implementation-Version': version, 
        'Main-Class': 'de.fau.screenshotter.ScreenShotter' 
    } 
    from { 
     configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } 
    } 
} 

Moja struktura projektu wygląda następująco:

Pytanie (tldr;)

Jak mogę powiedzieć Gradle stworzyć odpowiednie javadoc i źródłowych wpisy i dodać je do xml pliki używane przez IntelliJ?

+0

Ma również ten sam problem, ale z plikiem eclipse .classpath zamiast z intelliJ. – icyitscold

Odpowiedz

0

Jeśli posiadasz menedżera repozytorium binarnego, to publikuj moduł tam, który natychmiast rozwiązuje problem. W przeciwnym razie musisz dostroić idea.module, używając haka idea.module.iml.whenMerged lub haka idea.module.iml.withXml. Będzie to wymagało trochę kodu i nie mam gotowego rozwiązania. Szczegółowe informacje na temat interfejsu API można znaleźć w artykule IdeaModule w dokumentacji języka kompilacji Gradle.

Powiązane problemy