Ich arbeite an einem Gradle-Task, um ein Projekt für eine IDE basierend auf Eclipse zu erstellen. Dazu müssen sowohl eine .project
als auch eine .classpath
Datei generiert werden. Dieser Teil ist absolut kein Problem und ich kann das Gradle Eclipse Plugin über apply plugin: 'eclipse'
verwenden, um meine Aufgabe von eclipseProject
und eclipseClasspath
mit geänderten Konfigurationen abhängig zu machen. Eine zusätzliche Anforderung besagt jedoch, dass das gesamte Projekt portierbar sein muss (selbst in Umgebungen ohne Gradle). Daher ist es nicht möglich, nur die externen Abhängigkeiten zu definieren, da sich der Klassenpfad auf den Cache bezieht. Ich löste dieses Problem, indem ein Hauptprojekt definiert, die Abhängigkeiten mit:Erhalten Sie JavaDoc-Jars für Abhängigkeiten in Gradle
// Define configurations
configurations {
libs
}
// Define repositories
repositories {
mavenCentral()
}
// Include dependencies via 'groupID:artifactID:version[:classifier]'
dependencies {
libs 'junit:junit:4.12'
}
Diese Abhängigkeiten in den Cache heruntergeladen werden, und eine einfache Kopie Aufgabe kopiert sie in meinem Projekt 'lib'
Ordner:
// Copies the dependencies to project 'lib' folder
task copyLibs(type: Copy) {
from configurations.libs
into "$projectDir/$projectName/lib"
}
A Teilprojekt nutzt nun diese kopiert Bibliotheken als Abhängigkeiten, einfach mit:
dependencies {
compile fileTree(dir: 'lib', include: ['*.jar'])
}
Eine zusätzliche Aufgabe im Teilprojekt der Pfade relativiert, so dass ich kann mein Projekt verschieben und gradle build
anrufen, wo ich will. Dies ist, wie die Classpath aussieht:
<classpath>
<classpathentry path="bin" kind="output"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="lib" path="lib\hamcrest-core-1.3.jar"/>
<classpathentry kind="lib" path="lib\junit-4.12.jar"/>
</classpath>
Jetzt will ich die javadoc
-jars der Abhängigkeiten enthalten. Bevor die lokalen Kopien verwenden, könnte ich einfach this Eclipse plugin feature verwenden:
eclipse {
classpath {
downloadJavadoc = true
downloadSources = true
}
}
Aber jetzt mein Projekt verwendet, um Dateien als Abhängigkeiten, so kann die Eclipse-Plugin nicht nur einfach die Javadoc Dateien anfordern, auch. Wie kann ich den Download der javadoc
-jars ohne anfordern, die jedes Mal eine zweite Abhängigkeit mit dem :javadoc
Suffix hinzufügt? Sobald es heruntergeladen wird, kann ich es im Cache selbst suchen und fügen Sie es auch auf die .classpath
in der vorgesehenen Art und Weise:
<classpathentry kind="lib" path="lib\junit-4.12.jar">
<attributes>
<attribute name="javadoc_location" value="jar:platform:/path/to/javadoc/junit-4.12-javadoc.jar"/>
</attributes>
</classpathentry>
Aber im Moment, die javadoc
-jars nur heruntergeladen werden, wenn a) die Abhängigkeit mit dem :javadoc
Klassifikator-Suffix wird genau wie die reguläre Abhängigkeit definiert oder b) die Abhängigkeiten werden nicht kopiert, sondern direkt von einem Projekt mit dem Eclipse-Plugin referenziert (mit downloadJavadoc = true
).
In Umgebungen, in denen Gradle nicht installiert ist, können Sie den Gradle-Wrapper nicht verwenden? –