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

Eri*_*rra 38 publish artifact gradle maven

尝试将生成的jar安装到我的本地Maven存储库时,我遇到了问题.消息错误只显示'找不到任务'发布'

我正在使用这个Gradle脚本:

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'
}
Run Code Online (Sandbox Code Playgroud)

你知道为什么我正在阅读那条错误信息吗?谢谢.

更新

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

gradle publishToMavenLocal.
Run Code Online (Sandbox Code Playgroud)

RaG*_*aGe 64

将工件发布到本地maven的正确任务是

gradle publishToMavenLocal
Run Code Online (Sandbox Code Playgroud)

  • 我只是想补充一点,有时我发现直接从命令行发布时自定义版本号很有帮助——您可以通过添加 `-Pversion=<whatever>` 来做到这一点。IE`gradlepublishToMavenLocal-Pversion=SNAP` (6认同)
  • 这实际上并没有按照我想要的方式工作。该工件应该放置在 C:\Users\XXXX\.gradle\caches\modules-2\files-2.1\cdb-webservices-spring-boot-starter 中,但它被放置在 C:\Users\XXXX\.m2 中\存储库\cdb-webservices-spring-boot-starter\cdb-webservices-spring-boot-starter\ (2认同)
  • @VinayakDornala 见 /sf/ask/2482237411/ (2认同)

yoA*_*ex5 11

本地检查Maven

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

gradleapply plugin: 'com.android.library'not的设置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')

                }
*/
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

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

./gradlew publishToMavenLocal
Run Code Online (Sandbox Code Playgroud)

地点

artefact 将被添加到.m2文件夹中

//Unix
~/.m2

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

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

Run Code Online (Sandbox Code Playgroud)

build文件夹

<project_path>/build/outputs/<extension>
Run Code Online (Sandbox Code Playgroud)

其他存储库位置

~/.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
Run Code Online (Sandbox Code Playgroud)

要使用它,请添加mavenLocal(). 将其作为第一项进行优先排序非常重要,这对于内部依赖关系很有用

buildscript {
    repositories {
        mavenLocal()
    }

allprojects {
    repositories {
        mavenLocal()
    }
}
Run Code Online (Sandbox Code Playgroud)

dependencies {
    implementation 'com.company:HelloWorld:+'
}
Run Code Online (Sandbox Code Playgroud)

*另请记住,如果您使用某种shared.gradle文件(通过apply from),您应该设置与()相关的路径project.gradle shared.gradle

[iOS CocoaPod 本地]


rbe*_*nto 7

这是Gradle 7.5.1Java 17的替代框架

构建.gradle

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()
    }
}
Run Code Online (Sandbox Code Playgroud)

出版

您可以使用以下命令查看有关发布步骤的更多详细信息--info

./gradlew --info publishToMavenLocal
Run Code Online (Sandbox Code Playgroud)

输出目录

Linux/macOS

/Users/<username>/.m2/repository/your-group/your-artifact/0.0.1
Run Code Online (Sandbox Code Playgroud)

视窗

C:\Users\<username>\.m2\repository\your-group\your-artifact\0.0.1
Run Code Online (Sandbox Code Playgroud)


Mah*_*zad 5

这就是我使用Kotlin DSL (build.gradle.kts) 为我的 Android 库实现的方法:

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

    // ... (other plugins)
}

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

您可以使用以下命令创建所有出版物:

./gradlew publishAllPublicationsToLocalTestRepoRepository
Run Code Online (Sandbox Code Playgroud)

或者只是使用此命令的单个发布:

./gradlew publishReleasePublicationToLocalTestRepoRepository
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参阅Gradle 文档:Maven 发布插件