我有一个非常简单的spring-boot(1.0.2)示例(基于http://spring.io/guides/gs/rest-service/),使用Gradle(1.12)创建一个jar文件。
我正在尝试使用maven或maven-publish gradle插件构建并发布到我的本地maven repo但是我收到了错误:
无法初始化POM pom-default.xml:无法验证项目ngdc.sample的POM:hello-springboot atUsers/jcc/Documents/stash/hello-springboot/build/poms/pom-default.xml < / p>
并且不明白为什么。版本,组和archivesBaseName都在build.gradle中指定。一个不依赖于SpringBoot的类似项目可以正常工作。
有人可以提出问题所在吗?
谢谢!
- 约翰
答案 0 :(得分:11)
您可能需要确保也指定了父pom或依赖项管理(取决于您的配置,但如果您使用的是Spring Boot Gradle插件,则可能需要它)。示例:https://github.com/spring-projects/spring-boot/blob/master/spring-boot-integration-tests/spring-boot-gradle-tests/src/test/resources/installer.gradle
install {
repositories.mavenInstaller {
pom.project {
parent {
groupId 'org.springframework.boot'
artifactId 'spring-boot-starter-parent'
version "${project.bootVersion}"
}
}
}
}
答案 1 :(得分:1)
当dependency{...}
部分中没有依赖版本的Spring Boot Gradle插件时,生成的pom没有Spring Boot等版本。
所以目前需要为所有maven实现的任务自己创建与父pom的关系
parent {
groupId 'org.springframework.boot'
artifactId 'spring-boot-starter-parent'
version "${project.bootVersion}"
}
请参阅https://github.com/spring-projects/spring-boot/issues/1716
答案 2 :(得分:1)
我在这里遇到同样的问题。谢谢@cjstehno,我将在此汇总我的构建文件。
1)如果您使用的是maven插件,可以使用官方指南。
2)如果您使用的是maven-publish插件,则可以按照以下脚本进行操作。
另外,因为spring boot在发布之前需要自己的包过程(比如bootRepackage和assemble),所以我发布依赖于构建任务。
buildscript {
dependencies {
classpath 'org.springframework.boot:spring-boot-gradle-plugin:1.1.9.RELEASE'
}
}
apply plugin: 'spring-boot'
apply plugin: 'maven-publish'
group = '<some group id>'
version = '<some version with -SNAPSHOT>'
jar {
baseName = '<jar base name>'
}
publish.dependsOn build
publishing {
publications {
mavenJar(MavenPublication){
pom.withXml {
def parentNode = asNode().appendNode('parent')
parentNode.appendNode('groupId','org.springframework.boot')
parentNode.appendNode('artifactId','spring-boot-starter-parent')
parentNode.appendNode('version','1.1.9.RELEASE')
}
from components.java
}
}
}
publishing {
repositories {
maven {
credentials {
username 'admin'
password 'admin123'
}
url "http://<nexus server>:8081/nexus/content/repositories/snapshots/"
}
}
}
答案 3 :(得分:0)
这告诉我你正在创建你的工件(jar或war),但是伴随pom的验证失败了。对于有效的maven工件,您需要groupdId
,artifactId
和version
....
哪个转换为gradle group
,archivesBaseName
和version
。
确保你在工件上设置或配置了这三个属性,你可能会得到一些运气:-)
... e.g
archivesBaseName =&#39; xcxcxcxc&#39;
group =&#34; com.blah.xxdddd&#34;
version =&#39;#。#。#&#39;
...