Maven - for artifact the version cannot be empty

匿名 (未验证) 提交于 2019-12-03 00:56:02

问题:

Problem: I am using maven and suddenly got some errors:

For artifact {org.springframework.boot:spring-boot-starter-data-jpa:null:jar}: The version cannot be empty. (org.apache.maven.plugins:maven-resources-plugin:2.6:resources:default-resources:process-resources)  org.apache.maven.artifact.InvalidArtifactRTException: For artifact {org.springframework.boot:spring-boot-starter-data-jpa:null:jar}: The version cannot be empty.     at org.apache.maven.artifact.DefaultArtifact.validateIdentity(DefaultArtifact.java:148)     at org.apache.maven.artifact.DefaultArtifact.<init>(DefaultArtifact.java:123)     at org.apache.maven.artifact.factory.DefaultArtifactFactory.createArtifact(DefaultArtifactFactory.java:157)     at org.apache.maven.artifact.factory.DefaultArtifactFactory.createDependencyArtifact(DefaultArtifactFactory.java:57)     at org.apache.maven.project.artifact.MavenMetadataSource.createDependencyArtifact(MavenMetadataSource.java:328)     at org.apache.maven.project.artifact.MavenMetadataSource.createArtifacts(MavenMetadataSource.java:503)     at org.apache.maven.lifecycle.internal.DefaultProjectArtifactFactory.createArtifacts(DefaultProjectArtifactFactory.java:50)     at org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.resolveProjectDependencies(LifecycleDependencyResolver.java:119)     at org.apache.maven.lifecycle.internal.MojoExecutor.ensureDependenciesAreResolved(MojoExecutor.java:245)     at org.eclipse.m2e.core.internal.embedder.MavenImpl.execute(MavenImpl.java:330)     at org.eclipse.m2e.core.internal.embedder.MavenImpl$11.call(MavenImpl.java:1362)     at org.eclipse.m2e.core.internal.embedder.MavenImpl$11.call(MavenImpl.java:1)     at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.executeBare(MavenExecutionContext.java:176)     at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.execute(MavenExecutionContext.java:112)     at org.eclipse.m2e.core.internal.embedder.MavenImpl.execute(MavenImpl.java:1360)     at org.eclipse.m2e.core.project.configurator.MojoExecutionBuildParticipant.build(MojoExecutionBuildParticipant.java:52)     at org.eclipse.m2e.core.internal.builder.MavenBuilderImpl.build(MavenBuilderImpl.java:137)     at org.eclipse.m2e.core.internal.builder.MavenBuilder$1.method(MavenBuilder.java:172)     at org.eclipse.m2e.core.internal.builder.MavenBuilder$1.method(MavenBuilder.java:1)     at org.eclipse.m2e.core.internal.builder.MavenBuilder$BuildMethod$1$1.call(MavenBuilder.java:115)     at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.executeBare(MavenExecutionContext.java:176)     at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.execute(MavenExecutionContext.java:112)     at org.eclipse.m2e.core.internal.builder.MavenBuilder$BuildMethod$1.call(MavenBuilder.java:105)     at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.executeBare(MavenExecutionContext.java:176)     at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.execute(MavenExecutionContext.java:151)     at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.execute(MavenExecutionContext.java:99)     at org.eclipse.m2e.core.internal.builder.MavenBuilder$BuildMethod.execute(MavenBuilder.java:86)     at org.eclipse.m2e.core.internal.builder.MavenBuilder.build(MavenBuilder.java:200)     at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:735)     at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)     at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:206)     at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:246)     at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:301)     at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)     at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:304)     at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:360)     at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:383)     at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:144)     at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:235)     at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55) 

So I have added the artifact version <version>1.3.5.RELEASE</version> to spring-boot-starter-data-jpa. Unfortunately I still get the same issue. I have even cleanded the cache of maven. maven -> update project did not help and project -> clean did neither help

Question: What else could I have done wrong?

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">     <modelVersion>4.0.0</modelVersion>     <groupId>SpringDataDemo</groupId>     <artifactId>SpringDataDemo</artifactId>     <version>0.0.1-SNAPSHOT</version>     <packaging>war</packaging>      <build>         <plugins>             <plugin>                 <groupId>org.springframework.boot</groupId>                 <artifactId>spring-boot-maven-plugin</artifactId>             </plugin>             <plugin>                 <artifactId>maven-compiler-plugin</artifactId>                 <version>3.5.1</version>                 <configuration>                     <source>1.8</source>                     <target>1.8</target>                 </configuration>             </plugin>             <plugin>                 <artifactId>maven-war-plugin</artifactId>                 <version>2.6</version>                 <configuration>                     <warSourceDirectory>WebContent</warSourceDirectory>                     <failOnMissingWebXml>false</failOnMissingWebXml>                 </configuration>             </plugin>         </plugins>     </build>      <repositories>         <repository>             <id>spring-releases</id>             <name>Spring Releases</name>             <url>https://repo.spring.io/libs-release</url>         </repository>         <repository>             <id>org.jboss.repository.releases</id>             <name>JBoss Maven Release Repository</name>             <url>https://repository.jboss.org/nexus/content/repositories/releases</url>         </repository>     </repositories>      <pluginRepositories>         <pluginRepository>             <id>spring-releases</id>             <name>Spring Releases</name>             <url>https://repo.spring.io/libs-release</url>         </pluginRepository>     </pluginRepositories>      <properties>         <java.version>1.8</java.version>     </properties>      <dependencies>         <dependency>             <groupId>org.springframework.boot</groupId>             <artifactId>spring-boot-starter-data-jpa</artifactId>             <version>1.3.5.RELEASE</version>         </dependency>         <dependency>             <groupId>com.h2database</groupId>             <artifactId>h2</artifactId>             <version>1.4.192</version>         </dependency>      </dependencies>   </project> 

Eclipse marks weird lines red if it really is an issue of version numbers:

回答1:

You need to inherit from Spring Boot's parent POM:

<parent>     <groupId>org.springframework.boot</groupId>     <artifactId>spring-boot-starter-parent</artifactId>     <version>1.3.5.RELEASE</version> </parent> 

This parent POM declares lots of dependency versions for artifacts you might use on your projects, that way you don't need to specify it yourself.

From the docs:

Each release of Spring Boot provides a curated list of dependencies it supports. In practice, you do not need to provide a version for any of these dependencies in your build configuration as Spring Boot is managing that for you. When you upgrade Spring Boot itself, these dependencies will be upgraded as well in a consistent way.

See also:

  • Getting Started - Building an Application with Spring Boot


回答2:

The version is missing in the following plugin declaration:

        <plugin>             <groupId>org.springframework.boot</groupId>             <artifactId>spring-boot-maven-plugin</artifactId>         </plugin> 

Just add the version:

        <plugin>             <groupId>org.springframework.boot</groupId>             <artifactId>spring-boot-maven-plugin</artifactId>             <version>1.3.5.RELEASE</version>         </plugin> 


文章来源: Maven - for artifact the version cannot be empty
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎 反馈!
该文章没有解决你所遇到的问题? 点击提问,说说你的问题,让更多的人一起探讨吧!