这是我的
dummy
项目的build.gradle
文件:
apply plugin: 'groovy'
repositories {
mavenLocal()
mavenCentral()
}
dependencies {
compile 'org.codehaus.groovy:groovy-all:2.3.3'
compile 'org.slf4j:jcl-over-slf4j:1.7.7'
testCompile 'junit:junit:4.11'
testCompile 'org.mockito:mockito-all:1.10.8'
}
task sourcesJar(type: Jar, dependsOn: classes) {
classifier = 'sources'
from sourceSets.main.allSource
}
artifacts {
archives sourcesJar
}
task wrapper(type: Wrapper) {
gradleVersion = '1.11'
}
当我运行
gradle clean build -Pversion=1.2.3
时,它会打包我的所有代码并为我创建一个 build/libs/dummy-1.2.3.jar
。
我想知道绝对的“最低限度”的 Gradle 代码量,以便我可以将“虚拟”JAR 发布到本地 Maven 缓存 (mavenLocal()
)。此外,这如何与版本控制一起使用?我
可以总是为虚拟JAR指定一个具体版本,但是当我在本地发布时,发布
SNAPSHOT
版本更有意义(至少对我来说)。我可以只运行
gradle clean build -Pversion=0.1.SNAPSHOT
,但我担心的是其他本地项目是否会采用最新的SNAPSHOT
版本。再说一遍:
在本地发布
dummy
SNAPSHOT
SNAPSHOT
compile ':dummy:LATEST'
?
我已经为您准备了示例项目,这是build.gradle
配置的最低限度。
apply plugin: 'maven'
并设置
group = 'somegroup'
。 maven
插件提供 install
任务,并且需要 group
在 Maven 存储库中安装工件。 然后运行
gradle clean install
。如果没有版本通过,它将评估为
unspecified,如果没有配置
artifactId
,它将评估为project.name
。 在这里您可以找到如何配置其他maven属性。 安装快照进行本地开发绝对是个好主意。
build.gradle
脚本中。它保证解析到最新版本。
configurations.all {
resolutionStrategy {
cacheChangingModulesFor 0, 'seconds'
}
}
repositories
块(只是一个示例) - 使用本地maven存储库,不需要此步骤:
maven {
url 'https://oss.sonatype.org/content/repositories/snapshots'
}
依赖关系应指定为:
group:artifact:0.+
gradle install
2)指定您喜欢的任何版本 - 快照版本对于主动开发有意义。一旦您认为您的库不太可能更改,您绝对应该选择非快照版本。
3)您必须指定对本地存储库中的版本的依赖关系,就像第三方库一样。
在图书馆:
plugins {
id 'java'
id 'org.springframework.boot' version '3.3.1'
id 'io.spring.dependency-management' version '1.1.5'
id 'jacoco'
id 'maven-publish'
...
publishing {
publications {
mavenJava(MavenPublication) {
artifactId "${archivesBaseName}"
artifact jar
artifact sourceJar
pom.withXml {
asNode().appendNode('description', archivesBaseName)
}
}
}
}
然后在我的项目中需要它:
repositories {
mavenLocal()
maven {
url "$artifactory_url"
allowInsecureProtocol = true
credentials {
username = 'someuser'
password = 'somepass'
}
}
}
关键是首先是mavenLocal()
。 然后在库项目中运行命令:
gradle clean build
gradle publishToMavenLocal
如前所述:使用 Gradle 将 Java 工件发布到 Maven Local
完成后,我刷新了配置(以添加新的本地 Maven 存储库)和依赖项,并且它起作用了。 我的 IDE 是 IntelliJ。