maven的pom.xml的依赖,什么情况下可以不写版本号?

发布于 2022-01-08 01:44:29 字数 2545 浏览 717 评论 4

     以前见过的pom.xml文件,依赖中都是必须有版本号的。但今天看到别人写的一个关于SpringBoot的demo,依赖中没有版本号,也没有任何问题,项目能正常跑起来。pom.xml:

<?xml version="1.0" encoding="UTF-8"?>
<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>netgloo</groupId>
  <artifactId>spring-boot-mysql-hibernate</artifactId>
  <version>0.0.1-SNAPSHOT</version>

  <name>spring-boot-mysql-hibernate</name>
  <description>Use MySQL in Spring Boot web application with Hibernate</description>

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

  <dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
    </dependency>
  </dependencies>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <start-class>netgloo.Application</start-class>
    <java.version>1.7</java.version>
  </properties>

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

</project>


我猜原因在这段代码里:

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



但还是没想明白,为什么一些依赖如mysql连接可以忽略版本号?

有大触可以解释下吗?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

眉黛浅 2022-01-08 03:37:58

确实这样,在ide工具或者eclipse中体现不出这个问题,引入集成构建,这种问题就都出来了。各种“unknow-version”,各种“jar is missing”

猫九 2022-01-08 03:37:53

正常项目,最好都写上,不写具体版本号时,如果项目复杂度较低,依赖的开源项目少,那就还好。如果项目复杂度高,依赖了很多大的开源项目,那这些项目里自身又依赖了其它jar时,内部依赖jar极有可能出现版本冲突问题。在版本冲突出现时,早期不写具体版本号的写法,就会发现简直坑到死。

jar冲突,综合到具体版本上,才能针对性的引入这个老点的,那个新点的绕过去,甚至选择屏蔽哪个,都是要经过多次试验和研究的。动态无版本号写法,呵呵了,研究个p,过两天构建出的依赖jar也许版本又变了。。。

秋意浓 2022-01-08 03:37:50

还有一种情况,使用了依赖管理器的也可以不写

千纸鹤带着心事 2022-01-08 02:12:38

找到答案了。

之前的猜想并没有错,添加“parent”标签里的内容后,“spring-boot-starter-parent”会为开发者提供常用jar的版本管理,所以我们不需要指定版本,使用人家提供好的就可以了。当然,指定也是可以的,这会覆盖官方默认的版本,不推荐。

以上。

官方文档传送门

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文