使用 Gradle 在本地发布不起作用
Publishing locally with Gradle not working
我的目录结构如下:
myapp/
src/main/resources/
<lots of code>
build.gradle
具有以下build.gradle
:
apply plugin: 'java'
apply plugin: 'maven'
apply plugin: 'eclipse'
sourceCompatibility = '1.8'
targetCompatibility = '1.8'
[compileJava, compileTestJava]*.options*.encoding = 'UTF-8'
group = 'net.myuser'
repositories {
jcenter()
}
dependencies {
compile(
<dependencies here>
)
}
jar {
baseName = 'myapp'
}
task writePom << {
pom {
project {
groupId group
artifactId 'myapp'
version version
inceptionYear '2015'
licenses {
license {
name 'myapp'
distribution 'Blah blah blah'
}
}
}
}.writeTo("build/libs/pom.xml")
}
task sourcesJar(type: Jar, dependsOn: classes) {
classifier = 'sources'
from sourceSets.main.allSource
}
task javadocJar(type: Jar, dependsOn: javadoc) {
classifier = 'javadoc'
from javadoc.destinationDir
}
artifacts {
archives sourcesJar
archives javadocJar
}
artifacts {
archives(file("${buildDir}/libs/myapp-${version}.jar")) {
name "myapp"
classifier ""
}
}
当我这样做时:
./gradlew clean build writePom install -Pversion=0.1.0
我遇到两个问题:
- 在生成的
build/libs/pom.xml
中,groupId
显示为 null
;和
- 我在
~/.gradle/caches/modules-2
下找不到 net.myuser
目录,这告诉我 install
不工作
所以我问:我需要更改什么才能使 groupId
不为空,以及如何让 install
发布以下所有内容:
- JAR
- 来源 JAR
- Javadoc JAR
pom.xml
根据评论,使用 groupId project.group
而不是 groupId group
以正确设置 <groupId>
。
关于install
任务,请看Gradle Maven Plugin documentation:
Installs the associated artifacts to the local Maven cache, including Maven metadata generation.
默认情况下,本地 Maven 缓存 位于 ~/.m2/repository
,因此您看错了位置。安装任务不会篡改 ~/.gradle/caches/modules-2
,它(顾名思义)只是已解决依赖项的缓存。
通过使用 Maven 插件,Gradle 已经为您创建了一个 POM 文件。所以请检查您是否真的需要自定义 writePom
任务。
此外,主要工件是自动安装的,因此这可能是多余的:
artifacts {
archives(file("${buildDir}/libs/myapp-${version}.jar")) {
name "myapp"
classifier ""
}
}
我的目录结构如下:
myapp/
src/main/resources/
<lots of code>
build.gradle
具有以下build.gradle
:
apply plugin: 'java'
apply plugin: 'maven'
apply plugin: 'eclipse'
sourceCompatibility = '1.8'
targetCompatibility = '1.8'
[compileJava, compileTestJava]*.options*.encoding = 'UTF-8'
group = 'net.myuser'
repositories {
jcenter()
}
dependencies {
compile(
<dependencies here>
)
}
jar {
baseName = 'myapp'
}
task writePom << {
pom {
project {
groupId group
artifactId 'myapp'
version version
inceptionYear '2015'
licenses {
license {
name 'myapp'
distribution 'Blah blah blah'
}
}
}
}.writeTo("build/libs/pom.xml")
}
task sourcesJar(type: Jar, dependsOn: classes) {
classifier = 'sources'
from sourceSets.main.allSource
}
task javadocJar(type: Jar, dependsOn: javadoc) {
classifier = 'javadoc'
from javadoc.destinationDir
}
artifacts {
archives sourcesJar
archives javadocJar
}
artifacts {
archives(file("${buildDir}/libs/myapp-${version}.jar")) {
name "myapp"
classifier ""
}
}
当我这样做时:
./gradlew clean build writePom install -Pversion=0.1.0
我遇到两个问题:
- 在生成的
build/libs/pom.xml
中,groupId
显示为null
;和 - 我在
~/.gradle/caches/modules-2
下找不到net.myuser
目录,这告诉我install
不工作
所以我问:我需要更改什么才能使 groupId
不为空,以及如何让 install
发布以下所有内容:
- JAR
- 来源 JAR
- Javadoc JAR
pom.xml
根据评论,使用 groupId project.group
而不是 groupId group
以正确设置 <groupId>
。
关于install
任务,请看Gradle Maven Plugin documentation:
Installs the associated artifacts to the local Maven cache, including Maven metadata generation.
默认情况下,本地 Maven 缓存 位于 ~/.m2/repository
,因此您看错了位置。安装任务不会篡改 ~/.gradle/caches/modules-2
,它(顾名思义)只是已解决依赖项的缓存。
通过使用 Maven 插件,Gradle 已经为您创建了一个 POM 文件。所以请检查您是否真的需要自定义 writePom
任务。
此外,主要工件是自动安装的,因此这可能是多余的:
artifacts {
archives(file("${buildDir}/libs/myapp-${version}.jar")) {
name "myapp"
classifier ""
}
}