Maven中<resources>标签详解

本文详细介绍了Maven中如何通过profiles配置不同环境变量,并利用&lt;resources&gt;标签进行资源文件的过滤与打包,包括如何指定处理哪些目录下的资源文件、如何设置过滤规则等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

                    Maven中< resources>标签详解


 <!-- profiles.active默认激活dev -->
  <profiles>
    <profile>
        <!-- 声明这个profile的id身份 -->
        <id>dev</id>
        <!-- 默认激活:比如当知心mvn package命令是,没有传入参数,默认使用这个
                                    当使用mvn package -P dev 传入参数时,表示使用这个id的profile -->
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <!-- 该标签下配置对应的key  value -->
        <properties>
            <!-- 这里的标签名任意,在 项目的 properties、xml等配置文件中可以使用${profiles.active}取出dev这个值-->
            <profiles.active>dev</profiles.active>
        </properties>
    </profile>
    <profile>
        <id>test</id>
        <properties>
            <profiles.active>test</profiles.active>
        </properties>
    </profile>
    <profile>
        <id>pro</id>
        <properties>
            <profiles.active>pro</profiles.active>
        </properties>
    </profile>
  </profiles>


  <build>
    <finalName>com_dubbo_config</finalName>

    <resources>
        <resource>
            <!-- 指定resources插件处理哪个目录下的资源文件 -->
            <directory>src/main/resources</directory>
            <!-- 打包后放在什么位置 -->
            <targetPath>${project.build.directory}/classes</targetPath>
            <!-- 不包含directory指定目录下的以下文件 -->
            <excludes>
                <exclude>pro/*</exclude>
                <exclude>dev/*</exclude>
                <exclude>test/*</exclude>
            </excludes>
            <!-- 只(这个字很重要)包含directory指定目录下的以下文件 
                 <include>和<exclude>都存在的话,那就发生冲突了,这时会以<exclude>为准 -->
            <includes>
                <include></include>
            </includes>
            <!-- filtering为true的时候,这时只会把过滤的文件(<excludes>)打到classpath下,
                 filtering为false的时候,会把不需要过滤的文件(<includes>)打到classpath下 -->
            <filtering>true</filtering>
        </resource>

        <resource>
            <directory>src/main/resources/${profiles.active}</directory>
            <targetPath>${project.build.directory}/classes</targetPath>
        </resource>
    </resources>
  </build>
<?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>3.4.7</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.example</groupId> <artifactId>takeoutsystem</artifactId> <version>0.0.1-SNAPSHOT</version> <name>takeoutsystem</name> <description>takeoutsystem</description> <properties> <java.version>17</java.version> <!-- 修复版本冲突 --> <mybatis-plus.version>3.5.7</mybatis-plus.version> <mybatis.version>3.5.15</mybatis.version> <!-- 关键修复:升级到兼容版本 --> <mybatis-spring.version>3.0.3</mybatis-spring.version> <jjwt.version>0.11.5</jjwt.version> <springdoc-openapi.version>2.8.5</springdoc-openapi.version> <!-- 环境配置变量 --> <env>dev</env> </properties> <repositories> <repository> <id>aliyun-maven</id> <url>https://maven.aliyun.com/repository/public</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>false</enabled> </snapshots> </repository> </repositories> <dependencies> <!-- Spring Boot Web --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- Thymeleaf 模板引擎 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> <!-- MyBatis-Plus 依赖 - 关键修复 --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>${mybatis-plus.version}</version> <!-- 强化排除项解决冲突 --> <exclusions> <exclusion> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> </exclusion> <exclusion> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> </exclusion> <exclusion> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus</artifactId> </exclusion> </exclusions> </dependency> <!-- 添加明确的 MyBatis 依赖确保版本兼容 --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>${mybatis.version}</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>${mybatis-spring.version}</version> </dependency> <!-- 显式添加兼容的 MyBatis-Plus 核心 --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus</artifactId> <version>${mybatis-plus.version}</version> </dependency> <!-- MySQL 驱动 --> <dependency> <groupId>com.mysql</groupId> <artifactId>mysql-connector-j</artifactId> <scope>runtime</scope> </dependency> <!-- H2 内存数据库 (仅测试使用) --> <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> <scope>test</scope> </dependency> <!-- JJWT 认证 --> <dependency> <groupId>io.jsonwebtoken</groupId> <artifactId>jjwt-api</artifactId> <version>${jjwt.version}</version> </dependency> <dependency> <groupId>io.jsonwebtoken</groupId> <artifactId>jjwt-impl</artifactId> <version>${jjwt.version}</version> <scope>runtime</scope> </dependency> <dependency> <groupId>io.jsonwebtoken</groupId> <artifactId>jjwt-jackson</artifactId> <version>${jjwt.version}</version> <scope>runtime</scope> </dependency> <!-- Spring Security --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> <dependency> <groupId>org.thymeleaf.extras</groupId> <artifactId>thymeleaf-extras-springsecurity6</artifactId> </dependency> <!-- SpringDoc OpenAPI --> <dependency> <groupId>org.springdoc</groupId> <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId> <version>${springdoc-openapi.version}</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> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter-test</artifactId> <version>${mybatis-plus.version}</version> <scope>test</scope> <!-- 同样需要排除冲突 --> <exclusions> <exclusion> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> </exclusion> <exclusion> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-test</artifactId> <scope>test</scope> </dependency> <!-- Lombok --> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <scope>provided</scope> </dependency> </dependencies> <build> <resources> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> <includes> <include>application*.yml</include> <include>application*.properties</include> </includes> </resource> <resource> <directory>src/main/resources</directory> <excludes> <exclude>application*.yml</exclude> <exclude>application*.properties</exclude> </excludes> </resource> </resources> <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> <!-- 环境配置Profiles --> <profiles> <profile> <id>dev</id> <activation> <activeByDefault>true</activeByDefault> </activation> <properties> <env>dev</env> </properties> <build> <resources> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> <includes> <include>application.yml</include> <include>application-dev.yml</include> </includes> </resource> </resources> </build> </profile> <profile> <id>prod</id> <properties> <env>prod</env> </properties> <build> <resources> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> <includes> <include>application.yml</include> <include>application-prod.yml</include> </includes> </resource> </resources> </build> </profile> </profiles> </project>这是对应的POM.xml文件,请分析错误在哪里
07-15
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值