Java IntelliJ:如何使Maven项目仅使用pom.xml文件中显示的依赖项
通过导航到文件->新建->项目->Maven->标记“从原型创建”->org.apache.Maven.archetypes:Maven原型快速启动”->,我打开了一个新的Maven项目 我看到的是,这个操作将.m2/repository中的所有JAR都带到了项目的类路径中 我希望类路径中只使用pom.xml文件中提到的依赖项。例如,如果pom.xml对包A和B有依赖项,并且.m2/repository路径包含一个C包(可能来自另一个项目),那么我的项目将不会解析包C的符号 你知道怎么做吗Java IntelliJ:如何使Maven项目仅使用pom.xml文件中显示的依赖项,java,maven,intellij-idea,pom.xml,dependency-management,Java,Maven,Intellij Idea,Pom.xml,Dependency Management,通过导航到文件->新建->项目->Maven->标记“从原型创建”->org.apache.Maven.archetypes:Maven原型快速启动”->,我打开了一个新的Maven项目 我看到的是,这个操作将.m2/repository中的所有JAR都带到了项目的类路径中 我希望类路径中只使用pom.xml文件中提到的依赖项。例如,如果pom.xml对包A和B有依赖项,并且.m2/repository路径包含一个C包(可能来自另一个项目),那么我的项目将不会解析包C的符号 你知道怎么做吗 &l
<?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>com.example</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>demo</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.3.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
4.0.0
com.example
演示
0.0.1-快照
罐子
演示
SpringBoot的演示项目
org.springframework.boot
spring启动程序父级
1.4.3.1发布
UTF-8
UTF-8
1.8
org.springframework.boot
弹簧靴起动器
org.springframework.boot
弹簧起动试验
测试
org.springframework.boot
springbootmaven插件
Maven的一个核心功能是解决可传递的依赖关系。这些工件会自动下载并添加到类路径中
但在某些情况下,您可能不希望获取可传递的依赖项。请看下图:
在这里,您可以使用
元素防止maven获取工件C2:
com.example
德普
1.0.0
org.example
DepC2
Maven的一个核心功能是解决可传递的依赖关系。这些工件会自动下载并添加到类路径中
但在某些情况下,您可能不希望获取可传递的依赖项。请看下图:
在这里,您可以使用
元素防止maven获取工件C2:
com.example
德普
1.0.0
org.example
DepC2
本地存储库中的工件(~/.m2/repository
默认情况下)可供在您的每个项目中使用,不会自动包含在项目类路径中,但在需要时会包含它们(可能作为传递依赖项)。我的本地存储库包含大约5000个工件
本地maven存储库的概念也取代了IntelliJ和Eclipse中所谓的“库”。本地存储库中的工件(
~/.m2/repository
默认情况下)如果可用用于您的每个项目,则不会自动包含在项目类路径中,但会在需要时包含它们(可能作为可传递的依赖项)。我的本地存储库包含大约5000个工件
本地maven存储库的概念也是IntelliJ和Eclipse中所谓的“库”的替代品。您确定从项目a或B到C没有可传递的依赖关系吗?也就是说,pom.xml或B pom.xml对C有依赖关系吗?这不是它的工作方式,每个依赖关系都有可传递的依赖关系(即它们依赖于其他图书馆本身)。Maven的本质是处理这些可传递的依赖项,这样应用程序才能工作。如果这些依赖项需要运行可传递的依赖项,那么您也必须拥有它们。好的。但是如果我编写代码时忘记在pom.xml文件中提到需要的依赖项,会怎么样?也许我的代码可以工作,因为我已经安装了此de在我以前的一个项目中(所以它在.m2中),但是一旦我将这个项目部署到远程计算机上,这个项目就会出现一个错误,@CrazySynthax“如果我写代码时忘记提到依赖项怎么办”,只要你不手动更改IDE“构建路径”maven正确地处理了这个问题。它不只是在本地存储库中包含所有可用的JAR。它可能是这样的,因为您只有一个项目,maven刚刚下载了所有需要的JAR。请尝试以下操作:复制您的项目,更改
人工制品ID
,完全删除
,并检查副本的“构建路径”,您确定从项目A或B到C没有可传递的依赖关系吗?也就是说,pom.xml或B pom.xml对C有依赖关系吗?这不是它的工作方式,每个依赖关系都有可传递的依赖关系(即它们依赖于其他库本身)。Maven的本质是处理这些可传递的依赖项,这样应用程序才能工作。如果这些依赖项需要运行可传递的依赖项,那么您也必须拥有它们。好的。但是如果我编写代码时忘记在pom.xml文件中提到需要的依赖项,会怎么样?也许我的代码可以工作,因为我已经安装了此de在我以前的一个项目中(因此它在.m2中),但是一旦我将这个项目部署到远程计算机上,这个项目就会出现错误,@CrazySynthax“如果我写代码时忘记提到依赖项怎么办”,只要你不手动更改IDE的“构建路径”maven正确地处理了这个问题。它不只是在您的本地存储库中包含所有可用的JAR。它可能是这样的,因为您只有一个项目,maven刚刚下载了所有需要的JAR。请尝试以下操作:复制您的项目,更改artefactId
,完全删除
,并检查副本“构建路径”,