maven exclusion写法

maven引用包冲突的时候,使用exclusion的方式解决:
以下为示例:

<!-- apache shiro 相关jar包 -->
        <dependency>
            <groupId>org.apache.shiro</groupId>
            <artifactId>shiro-web</artifactId>
            <version>${shiro.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.shiro</groupId>
            <artifactId>shiro-spring</artifactId>
            <version>${shiro.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.shiro</groupId>
            <artifactId>shiro-core</artifactId>
            <version>${shiro.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.shiro</groupId>
            <artifactId>shiro-aspectj</artifactId>
            <version>${shiro.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.shiro</groupId>
            <artifactId>shiro-cas</artifactId>
            <version>${shiro.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.shiro</groupId>
            <artifactId>shiro-ehcache</artifactId>
            <version>${shiro.version}</version>
            <exclusions>
                <exclusion>
                    <artifactId>ehcache-core</artifactId>
                    <groupId>net.sf.ehcache</groupId>
                </exclusion>
            </exclusions>
        </dependency>


        <dependency>
            <groupId>net.sf.ehcache</groupId>
            <artifactId>ehcache</artifactId>
            <version>2.7.6</version>
        </dependency>
        <dependency>
            <groupId>net.sf.ehcache</groupId>
            <artifactId>ehcache-jgroupsreplication</artifactId>
            <version>1.7</version>
            <exclusions>
                <exclusion>
                    <artifactId>ehcache-core</artifactId>
                    <groupId>net.sf.ehcache</groupId>
                </exclusion>
            </exclusions>
        </dependency>

exclusions写在dependency中

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.2.2.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.jlwl</groupId> <!-- 导入项目的名称 --> <artifactId>springboot0hxfv</artifactId> <version>0.0.1-SNAPSHOT</version> <name>springboot-schema</name> <description>springboot学习框架</description> <properties> <java.version>1.8</java.version> <fastjson.version>1.2.8</fastjson.version> <maven-jar-plugin.version>3.1.1</maven-jar-plugin.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.1</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-spring</artifactId> <version>1.3.2</version> </dependency> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus</artifactId> <version>2.3</version> </dependency> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatisplus-spring-boot-starter</artifactId> <version>1.0.5</version> </dependency> <dependency> <groupId>com.google.protobuf</groupId> <artifactId>protobuf-java</artifactId> <version>3.10.0</version> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.0</version> </dependency> <dependency> <groupId>javax.validation</groupId> <artifactId>validation-api</artifactId> <version>2.0.1.Final</version> </dependency> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.5</version> </dependency> <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>4.0.12</version> </dependency> <!-- FastJson --> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>${fastjson.version}</version> </dependency> <!-- <dependency> <groupId>com.microsoft.sqlserver</groupId> <artifactId>sqljdbc4</artifactId> <scope>4.0</scope> <version>4.0</version> </dependency> <dependency> <groupId>com.microsoft.sqlserver</groupId> <artifactId>mssql-jdbc</artifactId> <version>6.2.0.jre8</version> <scope>runtime</scope> </dependency> --> <!-- 百度人工智能 --> <dependency> <groupId>com.baidu.aip</groupId> <artifactId>java-sdk</artifactId> <version>4.4.1</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.11</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>3.9</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> <exclusions> <exclusion> <groupId>org.junit.vintage</groupId> <artifactId>junit-vintage-engine</artifactId> </exclusion> </exclusions> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <configuration> <skipTests>true</skipTests> </configuration> </plugin> </plugins> </build> </project>
最新发布
05-14
<think>好的,我现在需要帮助用户理解Spring Boot项目的POM文件配置,包括依赖项、插件和属性设置。首先,我得回想一下用户之前的问题和提供的引用内容。用户之前可能已经接触过Spring Boot项目的基本结构,比如默认生成的pom.xml,以及如何添加依赖,比如引用[2]中的例子。用户现在想深入查看和理解POM文件的各个部分,所以需要详细解释每个配置模块。 首先,我应该从POM文件的基本结构开始。Spring Boot项目通常使用Maven作为构建工具,所以pom.xml是核心配置文件。需要提到父项目spring-boot-starter-parent,因为它提供了依赖管理和默认配置,这对简化版本管理很重要,用户可能想知道为什么需要这个父POM。 接下来是属性部分,用户可能想了解如何自定义属性,比如Java版本和Spring Boot版本。引用[3]提到配置属性可以通过不同方式设置,但这里主要是pom.xml中的属性。需要给出示例,比如设置<java.version>和<spring-boot.version>,并说明这些属性如何影响项目。 然后是依赖管理,用户需要知道常见的依赖项,比如spring-boot-starter-web和spring-boot-starter-test。引用[2]中的例子展示了如何添加依赖,这里应该扩展说明每个依赖的作用,比如starter-web用于web应用,starter-test用于测试。还要提到可选依赖,比如引用[2]中的spring-boot-configuration-processor,解释optional标签的作用。 插件部分也很重要,尤其是spring-boot-maven-plugin,它提供了打包和运行的功能。用户可能想知道这个插件的作用,比如repackage目标如何创建可执行的JAR。需要详细说明插件的配置,可能包括排除或包括特定的依赖,比如在示例中的<excludes>部分。 构建配置部分,比如资源过滤,用户可能需要知道如何处理application.properties中的占位符,引用[3]提到配置属性文件的位置,这里可以关联到资源目录的配置。 最后,用户可能需要一个完整的示例来整合所有部分,这样他们可以直观地看到各个配置如何组合在一起。同时,相关问题部分需要考虑用户可能的后续疑问,比如如何管理多模块项目的依赖,或者如何自定义构建配置,这有助于他们进一步探索。 需要注意的是,用户提供的引用中有关于属性配置、依赖添加和自动配置的内容,应该适当引用这些内容来支持解释,比如引用[3]中的环境抽象和配置属性来源,可以说明为什么在pom.xml中设置属性会影响应用配置。同时,确保回答符合中文语法,正确使用LaTeX格式,比如$spring-boot-starter-parent$这样的写法可能有误,应该使用正确的转义或者避免在行内公式中使用连字符,可能需要调整格式。 另外,用户的问题中提到了插件和属性设置,所以需要确保这两个部分都有足够的解释。比如,插件除了打包功能,还有哪些常用配置?属性设置中除了版本号,还有哪些常见属性可以定义?这些都是需要考虑的点。 总结一下,回答的结构应该是:父项目、属性部分、依赖管理、插件配置、构建配置,然后给出完整示例,最后相关问题。需要确保每个部分都有清晰的解释,并引用相关的引用内容来增强可信度。同时,检查LaTeX格式是否正确,行内公式用$...$,独立公式用$$...$$,但在这个问题中可能较多的是代码块,所以需要注意代码块的正确展示。</think>Spring Boot项目的POM文件配置是Maven构建工具的核心配置文件,涉及依赖管理、插件配置和属性定义。以下是关键配置模块的详细说明: --- ### 1. **父项目声明** 所有Spring Boot项目都应继承`spring-boot-starter-parent`,以简化依赖版本管理和默认配置: ```xml <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>3.1.5</version> <!-- 当前Spring Boot版本 --> <relativePath/> <!-- 优先从本地仓库加载 --> </parent> ``` 此父POM提供预定义的依赖版本、插件配置和资源过滤规则[^1]。 --- ### 2. **属性定义** 通过`<properties>`标签集中管理版本号和通用配置: ```xml <properties> <java.version>17</java.version> <!-- 指定Java版本 --> <spring-boot.version>3.1.5</spring-boot.version> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> ``` 属性值可在POM中通过`${property.name}`引用,例如`${java.version}`[^3]。 --- ### 3. **依赖管理** #### 核心依赖项 - **基础依赖**:`spring-boot-starter`包含自动配置、日志和YAML支持 - **Web应用**:`spring-boot-starter-web`集成Tomcat和Spring MVC - **测试依赖**:`spring-boot-starter-test`包含JUnit、Mockito等测试框架 ```xml <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> ``` #### 可选依赖 标记`<optional>true</optional>`表示依赖仅用于编译时(如配置处理器): ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional> </dependency> ``` 此配置支持`@ConfigurationProperties`注解的元数据生成[^2]。 --- ### 4. **插件配置** #### Spring Boot Maven插件 ```xml <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <excludes> <exclude> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </exclude> </excludes> </configuration> </plugin> </plugins> </build> ``` 该插件提供以下功能: 1. 打包可执行JAR(`mvn package`) 2. 运行应用(`mvn spring-boot:run`) 3. 排除开发阶段依赖(如Lombok)避免打包冗余内容 --- ### 5. **构建配置示例** 完整POM文件结构参考: ```xml <?xml version="1.0" encoding="UTF-8"?> <project> <!-- 父项目 --> <parent>...</parent> <properties>...</properties> <dependencies>...</dependencies> <build> <plugins> <plugin> <!-- 资源过滤支持占位符替换 --> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-resources-plugin</artifactId> <configuration> <delimiters> <delimiter>@</delimiter> </delimiters> </configuration> </plugin> </plugins> </build> </project> ``` --- ### 配置关联性 - **应用属性文件**:`application.properties`中配置(如`server.port=9000`)会覆盖POM定义的属性[^3] - **环境变量优先级**:命令行参数 > 系统属性 > 配置文件 > POM属性 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值