首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Gradle maven-publish for Spring-Boot项目引发错误:找不到项目的父项目: org.springframework.boot:spring-boot-starter-parent

Gradle maven-publish for Spring-Boot项目引发错误:找不到项目的父项目: org.springframework.boot:spring-boot-starter-parent
EN

Stack Overflow用户
提问于 2014-11-05 03:19:46
回答 2查看 2.1K关注 0票数 1

我是Gradle的新手,所以对这个错误的任何帮助都将受到高度的感谢。

我正在使用Spring-boot构建一个基于REST的服务。我希望将JAR文件发布到本地maven存储库,以便我的web应用程序可以使用它。在尝试了很多方法之后,我最终选择了maven-publish插件。这是我的build.gradle文件

代码语言:javascript
复制
//Needed for spring-boot
buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:1.1.8.RELEASE")
    }
}

apply plugin: 'eclipse'

// Apply the groovy plugin to add support for Groovy
apply plugin: 'groovy'

//apply Spring-boot plugin
apply plugin: 'spring-boot'

apply plugin: 'maven-publish'

// In this section you declare where to find the dependencies of your project
repositories {
    mavenLocal()

    // Use 'jcenter' for resolving your dependencies.
    // You can declare any Maven/Ivy/file repository here.
    jcenter()
    mavenCentral()
}

group = "com.proto"

publishing {
    publications {
        maven(MavenPublication) {
            groupId "${project.group}"
            artifactId "${project.name}"
            version "${project.jar.version}"
            artifact sourceJar { classifier "sources" }
            from components.java

            pom.withXml {
                asNode().appendNode('parent')
                        .appendNode('groupId', 'org.springframework.boot').parent()
                        .appendNode('artifactId', 'spring-boot-starter-parent').parent()
                        .appendNode('version', '1.1.8.RELEASE')

                asNode().appendNode('repositories').appendNode('repository')
                        .appendNode('id', 'spring-releases').parent()
                        .appendNode('url', 'http://repo.spring.io/libs-release')
            }
        }
    }
}

task sourceJar(type: Jar) { 
    from sourceSets.main.allJava 
}

jar {
    baseName = 'my-api'
    version =  '0.0.1'
}

task('execJar', type:Jar, dependsOn: 'jar') {
    baseName = 'my-api'
    version =  '0.0.1'
    classifier = 'exec'
    from sourceSets.main.output
}

bootRepackage  {
    withJarTask = tasks['execJar']
}

// In this section you declare the dependencies for your production and test code
dependencies {
    // We use the latest groovy 2.x version for building this library
    compile 'org.codehaus.groovy:groovy-all:2.3.6'

    compile 'org.codehaus.groovy.modules.http-builder:http-builder:0.7.1'

    // tag::jetty[]
    compile("org.springframework.boot:spring-boot-starter-web") 
//  {
//  exclude module: "spring-boot-starter-tomcat"
//  }
//  compile("org.springframework.boot:spring-boot-starter-jetty")
//  end::jetty[]

    // tag::actuator[]
    compile("org.springframework.boot:spring-boot-starter-actuator")

    // We use the awesome Spock testing and specification framework
    testCompile 'org.spockframework:spock-core:0.7-groovy-2.0'
    testCompile 'junit:junit:4.11'
    testCompile('org.springframework.boot:spring-boot-starter-test')
    testCompile('cglib:cglib:3.1')
}

// tag::wrapper[]
task wrapper(type: Wrapper) {
    gradleVersion = '2.1'
}

我的问题是,当我运行:

代码语言:javascript
复制
gradle publishToMavenLocal

我得到以下错误:

代码语言:javascript
复制
FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':publishMavenPublicationToMavenLocal'.
> Failed to publish publication 'maven' to repository 'MavenLocal'
   > Unable to initialize POM pom-default.xml: Cannot find parent: org.springframework.boot:spring-boot-starter-parent for project: com.proto:proto-api:jar:0.0.1 for project com.proto:proto-api:jar:0.0.1

我的gradle环境详细信息:

代码语言:javascript
复制
------------------------------------------------------------
Gradle 2.1
------------------------------------------------------------

Build time:   2014-09-08 10:40:39 UTC
Build number: none
Revision:     e6cf70745ac11fa943e19294d19a2c527a669a53

Groovy:       2.3.6
Ant:          Apache Ant(TM) version 1.9.3 compiled on December 23 2013
JVM:          1.7.0_72 (Oracle Corporation 24.72-b04)
OS:           Linux 3.13.0-39-generic amd64

我遗漏了什么?

提前感谢您的帮助。

EN

回答 2

Stack Overflow用户

发布于 2014-11-06 05:13:25

好了,我已经解决了这个问题。我在我们公司的防火墙后面,并且已经在~/.gradle/gradle.properties文件中为gradle正确配置了代理。但是,我错过了在~/.m2/settings.xml文件中为maven设置代理。

我配置了我们的内部节点存储库来处理这个问题,但是设置代理块也应该可以。Click here for maven settings.xml documentation

票数 1
EN

Stack Overflow用户

发布于 2015-07-07 21:41:04

和@aardee一样,我坐在公司防火墙后面,但似乎我对maven local的代理设置(settings.xml)并没有改变任何东西。幸运的是,我们有自己的maven仓库,可以代理输出,所以我只是替换了生成的pom中的仓库,并确保我们公司的maven仓库知道相关的spring repos。

代码语言:javascript
复制
pom.withXml {
            asNode().appendNode('parent')
                    .appendNode('groupId', 'org.springframework.boot').parent()
                    .appendNode('artifactId', 'spring-boot-starter-parent').parent()
                    .appendNode('version', '1.1.8.RELEASE')

            asNode().appendNode('repositories').appendNode('repository')
                    .appendNode('id', 'spring-releases').parent()
                    .appendNode('url', 'http://my.mavenRepo.com/releases}

用您自己的maven存储库替换http://my.mavenRepo.com/releases

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26743245

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档