Vig*_*dar 3 android javadoc gradle-dependencies
我需要通过Bintray将我的库(多模块项目)上传到sonatype存储库.所以我需要为每个模块单独生成Javadoc.
首先,我遇到了这些类似问题中的问题
Gradle Javadoc失败,出现"错误:包...不存在"
从第一个问题的解决方案,我可以解决我从第三方库(retrofit2,gson)和@NonNull注释错误使用的类.
但在我的情况下,我的一个模块(Lib2)依赖于另一个模块(Lib1).
生成Lib2模块的Javadoc时,它的警告package does not exist和cannot find symbol另一个模块的类(Lib1).
并且这两个模块都报告package does not exist了android支持和设计库的错误.
每一个import <packagename>.R;报道cannot find symbol
我的Javadoc生成任务
task androidJavadocs(type: Javadoc) {
source = android.sourceSets.main.java.source
classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
ext.androidJar ="${android.sdkDirectory}/platforms/${android.compileSdkVersion}/android.jar"
classpath += files(ext.androidJar)
project.android.libraryVariants.all { variant ->
classpath += files(variant.javaCompile.classpath.files)
}
}
Run Code Online (Sandbox Code Playgroud)
Lib1中的依赖项 build.gradle
compile rootProject.appcompat
compile rootProject.design
compile rootProject.retrofit2
compile rootProject.support
compile rootProject.gsonConverter
compile rootProject.httpLogInterceptor
compile rootProject.universalImageLoader
Run Code Online (Sandbox Code Playgroud)
Lib2中的依赖项 build.gradle
compile project(':core')
compile rootProject.appcompat
compile rootProject.design
compile rootProject.retrofit2
compile rootProject.support
compile rootProject.cardview
Run Code Online (Sandbox Code Playgroud)
我试过了
task androidJavadocs(type: Javadoc) {
source = android.sourceSets.main.java.srcDirs
classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
}
afterEvaluate {
androidJavadocs.classpath += project.android.libraryVariants.toList().first().javaCompile.classpath
}
Run Code Online (Sandbox Code Playgroud)
我的全部 gradle-mvn-push.gradle
apply plugin: 'maven'
apply plugin: 'com.jfrog.bintray'
// Declaring variables
afterEvaluate { project ->
bintray {
user = bin_user
key = bin_key
configurations = ['archives']
publish = true
dryRun = false
pkg {
repo = REPO
name = POM_ARTIFACT_ID
userOrg = USER_ORG
desc = POM_DESCRIPTION
websiteUrl = POM_URL
vcsUrl = GIT_URL
licenses = ['Apache-2.0']
version {
name = VERSION_NAME
vcsTag = VERSION_NAME
gpg {
sign = true
try {
passphrase = PASS_PHRASE
} catch (Exception ignored) {
println 'Failed to find credentials. GPG sign disabled'
}
}
}
}
}
if (project.getPlugins().hasPlugin('com.android.application') ||
project.getPlugins().hasPlugin('com.android.library')) {
task install(type: Upload, dependsOn: assemble) {
repositories.mavenInstaller {
configuration = configurations.archives
pom.groupId = GROUP
pom.artifactId = POM_ARTIFACT_ID
pom.version = VERSION_NAME
pom.project {
name POM_NAME
packaging POM_PACKAGING
description POM_DESCRIPTION
url POM_URL
scm {
url POM_SCM_URL
connection POM_SCM_CONNECTION
developerConnection POM_SCM_DEV_CONNECTION
}
licenses {
license {
name POM_LICENCE_NAME
url POM_LICENCE_URL
distribution POM_LICENCE_DIST
}
}
developers {
developer {
id pom_developer_id
name pom_developer_name
}
}
}
pom.withXml {
def dependenciesNode = asNode().appendNode('dependencies')
//Iterate over the compile dependencies (we don't want the test ones), adding a <dependency> node for each
configurations.compile.allDependencies.each {
def dependencyNode = dependenciesNode.appendNode('dependency')
dependencyNode.appendNode('groupId', it.group)
dependencyNode.appendNode('artifactId', it.name)
dependencyNode.appendNode('version', it.version)
}
}
}
}
task androidJavadocs(type: Javadoc) {
source = android.sourceSets.main.java.source
classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
ext.androidJar ="${android.sdkDirectory}/platforms/${android.compileSdkVersion}/android.jar"
classpath += files(ext.androidJar)
project.android.libraryVariants.all { variant ->
classpath += files(variant.javaCompile.classpath.files)
}
}
task androidJavadocsJar(type: Jar, dependsOn: androidJavadocs) {
classifier = 'javadoc'
from androidJavadocs.destinationDir
}
task androidSourcesJar(type: Jar) {
classifier = 'sources'
from android.sourceSets.main.java.source
}
} else {
install {
repositories.mavenInstaller {
pom.groupId = GROUP
pom.artifactId = POM_ARTIFACT_ID
pom.version = VERSION_NAME
pom.project {
name POM_NAME
packaging POM_PACKAGING
description POM_DESCRIPTION
url POM_URL
scm {
url POM_SCM_URL
connection POM_SCM_CONNECTION
developerConnection POM_SCM_DEV_CONNECTION
}
licenses {
license {
name POM_LICENCE_NAME
url POM_LICENCE_URL
distribution POM_LICENCE_DIST
}
}
developers {
developer {
id POM_DEVELOPER_ID
name POM_DEVELOPER_NAME
}
}
}
}
}
task sourcesJar(type: Jar, dependsOn:classes) {
classifier = 'sources'
from sourceSets.main.allSource
}
task javadocJar(type: Jar, dependsOn:javadoc) {
classifier = 'javadoc'
from javadoc.destinationDir
}
}
if (JavaVersion.current().isJava8Compatible()) {
allprojects {
tasks.withType(Javadoc) {
options.addStringOption('Xdoclint:none', '-quiet')
}
}
}
artifacts {
if (project.getPlugins().hasPlugin('com.android.application') ||
project.getPlugins().hasPlugin('com.android.library')) {
archives androidSourcesJar
archives androidJavadocsJar
} else {
archives sourcesJar
archives javadocJar
}
}
}
Run Code Online (Sandbox Code Playgroud)
Vig*_*dar 12
我使用下面的代码解决了这个问题
task androidJavadocs(type: Javadoc, dependsOn: 'assembleRelease') {
classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
android.libraryVariants.all { variant ->
if (variant.name == 'release') {
owner.classpath += variant.javaCompile.classpath
}
}
source = android.sourceSets.main.java.srcDirs
exclude '**/R.html', '**/R.*.html', '**/index.html'
}
Run Code Online (Sandbox Code Playgroud)
但仍有import <packagename>.R;报道cannot find symbol.
参考文献:
使用Javadocs进行冒险,第2部分(介绍Android框架类)
| 归档时间: |
|
| 查看次数: |
2857 次 |
| 最近记录: |