我想在maven中使用$ ./gradlew uploadArchives
我有这个项目结构:
MyProject
|_ SDK
|_ src
|_ main
|_ java
|_ java files
|_ build.gradle
|_ gradle
|_ gradle-publish.gradle
我使用了符合预期的以下代码(gradle-publish.gradle
):
task androidJavadocsJar(type: Jar, dependsOn: androidJavadocs) {
classifier = 'javadoc'
from androidJavadocs.destinationDir
}
task sourcesJar(type: Jar) {
classifier = 'sources'
from android.sourceSets.main.java.sourceFiles
}
uploadArchives {
repositories {
mavenDeployer {
/* ... */
}
}
}
artifacts {
archives sourcesJar
archives androidJavadocsJar
}
现在我将主模块拆分为2:SDK
和new_module
所以我的项目结构如下:
MyProject
|_ SDK
|_ src
|_ main
|_ java
|_ java files "com.app"
|_ build.gradle
|_ new_module
|_ src
|_ main
|_ java
|_ java files "com.app.mod"
|_ build.gradle
|_ gradle
|_ gradle-publish.gradle
但无论我做什么,我总是只获得SDK
个来源,而不是new_module
a.e. com.app
应与com.app.mod
我尝试使用sourceSets
,但看起来它在主模块SDK
内部工作,而不是在根项目下:
sourceSets {
main{
java {
srcDirs(
"src/main/java",
"../new_module/src/main/java"
)
}
}
和
task sourcesJar(type: Jar) {
classifier = 'sources'
from android.sourceSets.main.java.srcDirs
}
任何想法,提示?
修改
我添加了
sourceSets {
main{
java {
srcDirs("src/main/java",
"${root_dir}/new_module/src/main/java"
)
}
}
}
但是在maven上我看到所有人都有来源,但classes.jar
只包含app
.class
个文件
答案 0 :(得分:2)
在sourceSet
android
的{{1}}部分下添加自定义SDK
:
build.gradle
您不需要包含android{
//...
sourceSets {
main{
java {
srcDirs "$rootDir/new_module/src/main/java/"
}
}
}
}
- 已包含
此外,您不需要将"src/main/java"
绑定到您的依赖项中,new_module
将成为您new_module
模块的一部分
SDK
答案 1 :(得分:0)
您是否尝试在每个build.gradle中包含gradle-publish.gradle?或者在你的主build.gradle?
E.g。在pyExcelerator
${rootDir}/new_module/build.gradle
或apply from "${rootDir}/gradle/gradle-publish.gradle"
:
${rootDir}/build.gradle
答案 2 :(得分:0)
或者您可能没有定义要在build.gradle中发布的工件:
artifacts {
archives jar, javadocJar, sourcesJar
testArchives testJar, testSourcesJar
}
task javadocJar(type: Jar) {
description "Assembles a jar archive containing the javadoc files"
classifier = "javadoc"
from javadoc
}
task sourcesJar(type: Jar) {
description "Assembles a jar archive containing the source files"
classifier = "sources"
from sourceSets.main.allSource
}
task testJar(type: Jar, dependsOn: project.testClasses) {
description "Assembles a jar archive containing the test files"
classifier = "test"
from project.sourceSets.test.output
}
task testSourcesJar(type: Jar) {
description "Assembles a jar archive containing the test source files"
classifier = "test-sources"
from sourceSets.test.allSource
}
答案 3 :(得分:0)
查看要通过Jcenter分发的link,按照每个子模块链接中提到的步骤进行操作。
并确保所有子模块都使用通用的GROUP_ID发布到同一个遥控器。
答案 4 :(得分:0)
uploadArchives
并不意味着用于安装到本地Maven存储库。相反,请使用install
任务。
替换它:从
uploadArchives {
repositories {
mavenDeployer {
/* ... */
}
}
}
到:
install{
repositories {
mavenDeployer {
/* ... */
}
}
}