Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java IntelliJ:如何使Maven项目仅使用pom.xml文件中显示的依赖项_Java_Maven_Intellij Idea_Pom.xml_Dependency Management - Fatal编程技术网

Java IntelliJ:如何使Maven项目仅使用pom.xml文件中显示的依赖项

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

通过导航到文件->新建->项目->Maven->标记“从原型创建”->org.apache.Maven.archetypes:Maven原型快速启动”->,我打开了一个新的Maven项目

我看到的是,这个操作将.m2/repository中的所有JAR都带到了项目的类路径中

我希望类路径中只使用pom.xml文件中提到的依赖项。例如,如果pom.xml对包A和B有依赖项,并且.m2/repository路径包含一个C包(可能来自另一个项目),那么我的项目将不会解析包C的符号

你知道怎么做吗

<?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
,完全删除
,并检查副本“构建路径”,