使用 Gradle 将 Java 工件发布到 Maven Local

当尝试将生成的 jar 安装到我的本地 MavenRepository 时,我遇到了一个问题。消息错误只显示“未找到‘发布’任务”

我正在使用这个格拉德脚本:

buildscript {
ext {
springBootVersion = '1.3.2.RELEASE'
}
repositories {
mavenCentral()
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
}
}


apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'idea'
apply plugin: 'spring-boot'
apply plugin: 'maven-publish'


jar {
baseName = 'mongofoundry'
version = '1.0.0'
}
sourceCompatibility = 1.7
targetCompatibility = 1.7




repositories {
mavenCentral()
}




dependencies {
compile('org.springframework.boot:spring-boot-starter-web')
compile('org.springframework.boot:spring-boot-starter-data-mongodb')
testCompile('org.springframework.boot:spring-boot-starter-test')
}


publishing {
publications {
mavenJava(MavenPublication) {
from components.java
}
}
}




eclipse {
classpath {
containers.remove('org.eclipse.jdt.launching.JRE_CONTAINER')
containers 'org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7'
}
}


task wrapper(type: Wrapper) {
gradleVersion = '2.9'
}

你知道我为什么要读那个错误消息吗? 谢谢。

更新

运行@RaGe 提到的命令,解决了问题:

gradle publishToMavenLocal.
94682 次浏览

向本地专家发布工件的正确任务是

gradle publishToMavenLocal

Maven 插件添加到项目中,然后: gradle clean install

查查本地的玛文

对于开发和测试,在本地检查库是很有用的

gradle设置为 apply plugin: 'com.android.library'而不是 apply plugin: 'java-library'(在这里您可以默认使用它)

apply plugin: 'maven-publish'


//simple settings
project.afterEvaluate {
publishing {
publications {
library(MavenPublication) {
//setGroupId groupId
setGroupId "com.company"
//setArtifactId artifactId
setArtifactId "HelloWorld"
version "1.1"


artifact bundleDebugAar


/* add a dependency into generated .pom file
pom.withXml {
def dependenciesNode = asNode().appendNode('dependencies')
def dependencyNode = dependenciesNode.appendNode('dependency')
dependencyNode.appendNode('groupId', 'com.company')
dependencyNode.appendNode('artifactId', 'HelloWorld-core')
dependencyNode.appendNode('version', '1.1')


}
*/
}
}
}
}

使用命令行运行它或者在 Gradle选项卡中找到这个命令

./gradlew publishToMavenLocal

地点

人工制品将被添加到 .m2文件夹

//Unix
~/.m2


//Windows
C:\Users\<username>\.m2


//For example
/Users/alex/.m2/repository/<library_path>/<version>/<name>.<extension>


build文件夹

<project_path>/build/outputs/<extension>

其他存储库位置

~/.gradle/caches/modules-2/files-2.1/<group_id>/<artifact_id>/<version>/<id>


//For example
/Users/alex/.gradle/caches/modules-2/files-2.1/com.company/HelloWorld/1.1/c84ac8bc425dcae087c8abbc9ecdc27fafbb664a

要使用它,请添加 mavenLocal()。将其作为优先级排序的第一项很重要,这对于内部依赖性很有用

buildscript {
repositories {
mavenLocal()
}


allprojects {
repositories {
mavenLocal()
}
}

还有

dependencies {
implementation 'com.company:HelloWorld:+'
}

* 还要记住,如果你使用一种 shared.gradle文件(通过 apply from) ,你应该设置与 project.gradle(没有 shared.gradle)相关的 路径

[ iOS CocoaPod local ]

下面是我对 我的 Android 库Kotlin DSL(build.gradle.kts)的处理方法:

plugins {
id("maven-publish")
// OR simply
// `maven-publish`
// ...
}


publishing {
repositories {
// Local repository which we can first publish in it to check artifacts
maven {
name = "LocalTestRepo"
url = uri("file://${buildDir}/local-repository")
}
}
publications {
// ...
}
}

可以使用以下命令创建所有发布:

./gradlew publishAllPublicationsToLocalTestRepoRepository

或者只有一个具有以下命令的出版物:

./gradlew publishReleasePublicationToLocalTestRepoRepository

有关更多信息,请参见 分级文档: Maven 发布插件

下面是 7.5.1年级爪哇17的替代框架

建造,分级

plugins {
id 'org.gradle.java'
id 'org.gradle.maven-publish'
}


repositories {
mavenLocal()
mavenCentral()
}


dependencies {
}


java {
toolchain {
languageVersion = JavaLanguageVersion.of(17)
}
withJavadocJar()
withSourcesJar()
}


publishing {
publications {
mavenJava(MavenPublication) {
groupId = 'your-group'
artifactId = 'your-artifact'
version = "0.0.1"
from components.java
}
}
repositories {
mavenLocal()
}
}

出版

您可以通过 --info查看有关发布步骤的更多详细信息

./gradlew --info publishToMavenLocal

输出目录

Linux/macOS

/Users/<username>/.m2/repository/your-group/your-artifact/0.0.1

窗户

C:\Users\<username>\.m2\repository\your-group\your-artifact\0.0.1