我开始使用maven了。
所以我正在开始一个spring-boot项目,我正试图包含我公司的专有依赖项。
所以pom看起来像
<?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>org.mycompany</groupId>
<artifactId>test-project</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>test-project</name>
<description>Test Project</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.2.2.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<java.version>1.7</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>1.2.2.RELEASE</version>
</dependency>
<dependency>
<groupId>my.company</groupId>
<artifactId>some-java-api</artifactId>
<version>1.0.0</version>
</dependency>
<dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
所以当我尝试
时mvn spring-boot:run
我遇到了像
这样的错误[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] /Users/myhome/git/myproject/src/main/java/my/company/somepkg/Application.java:[3,24] package my.company.somedependency.somepkg does not exist
所以我意识到有些软件包缺失了,继续根据直觉添加内容,并从其他项目中查看和pom。
我的问题是:
如何解决此问题并获得正确的依赖关系 而不是做直觉和随机的东西?
我如何弄明白:
- 缺少哪些依赖项?
- 什么是传递和重复 依赖?
醇>
答案 0 :(得分:0)
希望你不希望别人在这里发书; - )
所以一些提示可能会有所帮助:
1:因为缺少了你公司的依赖,我无法告诉你。但是您遇到的错误是编译错误 - 我认为Application.class位于错误的包中:my/company/Application.java:[3,24] package my.company.somepkg
&#34; somepkg&#34;部分遗失。
2:传递依赖是依赖关系的依赖关系。模块通常依赖于休眠或弹簧或其他jar。 Maven将使用与maven存储库中的jar一起部署的pom.xml中的信息为您解析所需的库。
重复的依赖关系测量你在依赖树中有两次依赖关系。 Maven用所谓的GAV坐标(groupId,artifactId和version,也许是分类器)来识别它们。如果这些匹配maven需要解决依赖关系获胜。
通常的方法是使用距离最短的版本。你自己的pom中的距离为0(或1?)。依赖关系的依赖关系有更高的距离。这可能是错的,但你总是可以用你自己的pom来覆盖它们。试试&#34; mvn dependency:tree
&#34;你的pom在哪里。它将显示maven看到的内容。
我希望这有点帮助:)