Hi there,
I am trying to figure out a way to show javadoc from a local .jar
in my project, so I can see the documentation in intelliJ (and possible also NetBeans).
My build.gradle
contains the following to include the local jars:
dependencies {
compile fileTree(dir: "./src/libs/", includes: ['*.jar'])
}
and in the libs
folder is three .jar
files (compiled java, sources and javadoc) all for the same project.
What I cannot figure out it how get intelliJ to read the javadoc and show that. I made a small task with
task listJars {
configurations.compile.each { File file -> println file.name }
}
to confirm that all the .jar
files are included, which they are. The task outputs:
PickRandomStudent-1.0-javadoc.jar
PickRandomStudent-1.0-sources.jar
PickRandomStudent-1.0.jar
The -javadoc.jar
was created in another project with the javadoc
task.
I also have
apply plugin: 'idea'
idea {
module {
downloadJavadoc = true
}
}
which is not really helping me in this case
Hope you guys can help!
/Kasper
Lance
(uklance)
March 2, 2018, 8:10pm
2
The simplest way to achieve this is layout the jars in a maven style directory layout.
Eg:
mavenRepo/group/PickRandomStudent/1.0/PickRandomStudent-1.0-javadoc.jar
mavenRepo/group/PickRandomStudent/1.0/PickRandomStudent-1.0-sources.jar
mavenRepo/group/PickRandomStudent/1.0/PickRandomStudent-1.0.jar
You can then reference the dependency in your build
repositories {
maven {
url file('mavenRepo')
}
}
dependencies {
compile 'group:PickRandomStudent:1.0'
}
This has the added benefit that the jars can now properly participate in Gradleâs dependency resolution process
1 Like
Ah yes! Thank you very much @Lance !
In IntelliJ 2018.3.3 with Gradle 5.1 this seems to be broken. I still have the three files locally and the jar file with the classes are correctly recognized and can be imported and used. The source and javadoc however are not.
In the ./idea/libraries
folder that is created by IntelliJ i can find the file:
Gradle__dk_kaspersoerensen_PickRandomStudent_1_0.xml
that looks like this:
<component name="libraryTable">
<library name="Gradle: dk.kaspersoerensen:PickRandomStudent:1.0">
<CLASSES>
<root url="jar://$PROJECT_DIR$/lib/dk/kaspersoerensen/PickRandomStudent/1.0/PickRandomStudent-1.0.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</component>
Clearly both <JAVADOC>
and <SOURCES>
are empty. Filling them out manually with the path to the -javadoc.jar
and -sources.jar
resolves the problem, but I am wondering if the idea
plugin to Gradle should do this, when calling the idea
task?
If I use external packages from the MavenCentral there is no problem downloading the sources and javadoc. These will both be listed in the ./idea/libraries
folder.
EDIT
When using the ideaModule
task, the .iml
file does look correct, but the javadocs are still not available.
<?xml version="1.0" encoding="UTF-8"?>
<module relativePaths="true" type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output/>
<orderEntry type="inheritedJdk"/>
<content url="file://$MODULE_DIR$/">
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false"/>
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true"/>
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource"/>
<sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource"/>
<excludeFolder url="file://$MODULE_DIR$/.gradle"/>
<excludeFolder url="file://$MODULE_DIR$/build"/>
</content>
<orderEntry type="sourceFolder" forTests="false"/>
<orderEntry type="module-library">
<library>
<CLASSES>
<root url="jar://$MODULE_DIR$/externalJars/dk/kaspersoerensen/PickRandomStudent/1.0/PickRandomStudent-1.0.jar!/"/>
</CLASSES>
<JAVADOC>
<root url="jar://$MODULE_DIR$/externalJars/dk/kaspersoerensen/PickRandomStudent/1.0/PickRandomStudent-1.0-javadoc.jar!/"/>
</JAVADOC>
<SOURCES>
<root url="jar://$MODULE_DIR$/externalJars/dk/kaspersoerensen/PickRandomStudent/1.0/PickRandomStudent-1.0-sources.jar!/"/>
</SOURCES>
</library>
</orderEntry>
</component>
<component name="ModuleRootManager"/>
</module>
xanscale
(Alessandro Scarozza)
April 29, 2020, 10:32am
6
this burn me some hours: if you have an âaarâ:
compile âgroup:PickRandomStudent:1.0@aarâ
acid1103
(Steven)
January 27, 2021, 12:37pm
7
Since version 6.0, itâs necessary for the repositories
block to look something like this:
repositories {
maven {
url file('mavenRepo)
metadataSources {
artifact()
}
}
}
See here.
1 Like