gpt4 book ai didi

java - Gradle maven-publish如何用于多个项目

转载 作者:行者123 更新时间:2023-11-29 02:57:52 24 4
gpt4 key购买 nike

可能是我无法从 google 中找到合适的组合键。

环境: Gradle 2.0

引用文档 http://www.gradle.org/docs/current/userguide/publishing_maven.html

我有一个像

这样的 gradle flat 多层次项目
root:
-project1
-project2

使用 plugin: 'maven-publish' 我想将单个项目安装到 maven local repo 中。但是,当我尝试执行 publishToMavenLocal 任务时,它会创建 jar 但该 jar 没有任何 class 文件

每个单独的项目都有源文件夹作为 src/api/javasrc/impl/java 我想安装 apiimll 分开,如果单独捆绑也很好。

下面是我当前的 build.gradle 文件内容:

root:

subprojects {
apply plugin: 'eclipse'
apply plugin: "java"
apply plugin: "maven"
apply plugin: 'maven-publish'

repositories {
mavenCentral()
mavenLocal()
}

dependencies {
testCompile 'junit:junit:4.8.2'
}

group = 'com.xx.ws.api'
version = '1.0'
description = "Common Utils Test."
targetCompatibility = "1.8"
sourceCompatibility = "1.8"

jar {
manifest.attributes provider: 'test'
}

//Gradle Wrapper genrator
task wrapper(type: Wrapper) {
gradleVersion = '2.0'
}
}

项目 1:

ext {
jerseyVersion = "2.10.1"
}

group = "com.xx.ws.api"
version = 1.0

dependencies {
compile project(':commonutil')
compile 'commons-codec:commons-codec:1.5'

compile 'commons-lang:commons-lang:2.6'
compile (group: 'org.glassfish.jersey.containers', name: 'jersey-container-servlet', version: jerseyVersion){
exclude module: 'jersey-client'
exclude module: 'javax.annotation-api'
exclude module: 'validation-api'
exclude module: 'aopalliance-repackaged'
exclude module: 'javax.inject'
exclude module: 'hk2-api'
exclude module: 'hk2-locator'
exclude module: 'hk2-utils'
exclude module: 'tiger-types'
exclude module: 'osgi-resource-locator'
exclude module: 'jersey-guava'
exclude module: 'jersey-container-servlet-core'
exclude module: 'jersey-container-servlet'
exclude module: 'jersey-common'
exclude module: 'jersey-server'

}
// implCompile (group: 'org.glassfish.jersey.ext', name: 'jersey-spring3', version: jerseyVersion){
// //excluding a particular transitive dependency:
// //exclude module: 'cglib' //by artifact name
// exclude group: 'org.springframework' //by group
// //exclude group: 'org.unwanted', module: 'iAmBuggy' //by both name and group
// }

testCompile 'junit:junit:4.10'
}

task sourceJar(type: Jar) {
classifier "source"
}

publishing {
publications {
maven(MavenPublication) {
from components.java
//artifact sourceJar // Publish the output of the sourceJar task
//artifact source: sourceJar, classifier: 'src', extension: 'zip'
}
}
}

请帮助我,如果我遗漏了什么或者我完全走错了学习 Gradle 的道路。

最佳答案

each individual project has source folder as src/api/java and src/impl/java

默认情况下,Gradle 希望你的主源文件夹是 src/main/java,如果你想把它放在不同的地方你需要告诉 gradle 它在​​哪里 as explained in the user guide

关于java - Gradle maven-publish如何用于多个项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24705745/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com