maven <resources>理解

http://blog.csdn.net/ningbohezhijunbl/article/details/24799465

maven的Pom.xml中build下的resources,一直不太理解,现在总结一下。

resources:描述工程中资源的位置 

<resource> 
    <targetPath>META-INF/plexus</targetPath> 
    <filtering>false</filtering> 
    <directory>${basedir}/src/main/plexus</directory> 
    <includes> 
        <include>configuration.xml</include> 
    </includes> 
    <excludes> 
        <exclude>**/*.properties</exclude> 
    </excludes> 
</resource>

targetPath:指定build资源到哪个目录,默认是base directory

filtering:指定是否将filter文件(即build下的filters里定义的*.property文件)的变量值在这个resource文件有效,例如上面就指定那些变量值在configuration文件无效。

directory:指定属性文件的目录,build的过程需要找到它,并且将其放到targetPath下,默认的directory是${basedir}/src/main/resources

includes:指定包含文件的patterns,符合样式并且在directory目录下的文件将会包含进project的资源文件。

excludes:指定不包含在内的patterns,如果inclues与excludes有冲突,那么excludes胜利,那些符合冲突的样式的文件是不会包含进来的。

testResources:这个模块包含测试资源元素,其内容定义与resources类似,不同的一点是默认的测试资源路径是${basedir}/src/test/resources,测试资源是不部署的。


默认情况下,如果没有指定resources,目前认为自动会将classpath下的src/main/java下的.class文件和src/main/resources下的.xml文件放到target里头的classes文件夹下的package下的文件夹里。如果设定了resources,那么默认的就会失效,就会以指定的includes和excludes为准。例如,为了使打包的jar包里头包含.java源文件。


本人项目中的pom.xml

<build>
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>com/changfu/business/tpp/util/templates/**.html</include>
                    <include></include>
                </includes>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
            </resource>
        </resources>


<?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、付费专栏及课程。

余额充值