maven-resources-plugin的使用

胡景澄
2023-12-01

在父工程里的pom.xml配置

<!-- maven编译构建时的一些配置 -->
	<build>
		<finalName>${project.artifactId}</finalName>
		<!-- 父工程定义的插件,子工程都能继承 -->
		<plugins>
			<!-- 资源文件拷贝的插件 -->
			<!-- 我们通过逆向工程生成的mapper.xml配置文件,如果存放在src/main/Java文件目录下, 那么resources资源文件夹下就没有这些mapper.xml配置文件, 
				故需要:把指定目录的文件,当作资源文件来编译,有了这个插件,就能干这个活了。 -->
			<!-- 该插件的作用 主要是处理将 主程序与 测试程序所需的源文件复制到输出编译文件夹中。 -->
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-resources-plugin</artifactId>
				<version>2.7</version>
				<configuration>
					<!-- 在构建路径中 指定源文件编译的字符编码 -->
					<encoding>UTF-8</encoding>
				</configuration>
			</plugin>

			<!-- java编译插件,告诉maven在编译Java文件时使用什么版本的jre -->
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>3.2</version>
				<configuration>
					<source>1.8</source>
					<target>1.8</target>
					<encoding>UTF-8</encoding>
				</configuration>
			</plugin>
		</plugins>

		<!-- 配置Tomcat插件的版本,具体的项目运行时,就是使用该版本,这里类似定义接口。 dependencyManagement给依赖定义了接口,pluginManagement给plugin插件定义了接口。 -->
		<pluginManagement>
			<plugins>
				<plugin>
					<groupId>org.apache.tomcat.maven</groupId>
					<artifactId>tomcat7-maven-plugin</artifactId>
					<version>2.2</version>
				</plugin>
			</plugins>
		</pluginManagement>
	</build>

子工程pom.xml,如下resources的配置,如果放在父项目中,则所有的项目都可以参考依赖。

<build>
		<!-- maven-resources-plugin 插件会读取如下的resources配置,来完成文件的copy工作 -->
		<resources>
			<!-- 因为我们通过逆向工程生成的mapper.xml配置文件,是存放在Java文件目录下的,不是resources资源文件夹下,
			resources资源文件夹是classes类路径文件。
			默认是把src/main/resources下的文件编译到classes下,
			如果配置,则之前的默认加载方式就失效了。 -->
			
			<!-- 把src/main/java下的所有.xml文件拷贝到classes类路径下 -->
			<resource>
				<directory>src/main/java</directory>
				<includes>
					<include>**/*.xml</include>
				</includes>
			</resource>

			<!-- 默认的加载方式失效,这里明确通过插件copy,把src/main/resources下的所有.xml文件拷贝到classes类路径下 -->
			<resource>
				<directory>src/main/resources</directory>
				<includes>
					<include>**/*.xml</include>
					<include>**/*.properties</include>
				</includes>
			</resource>
		</resources>
	</build>

注意:一般情况下,编译器会把sources文件以及resource文件编译到classes目录,如果使用了maven-resources-plugin插件,并指定了resource的行为,那么默认的行为就失效了,参考我们自己配置的方式来copy文件到classes。

	<!--对资源管理的插件,使用过程中发现maven-source-plugin可能会出现bug,推荐使用maven-resources-plugin-->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-resources-plugin</artifactId>
                <version>2.7</version>
                <configuration>
                    <!-- 在构建路径中 指定源文件编译的字符编码 -->
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>

			
            <!--<plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-source-plugin</artifactId>
                <version>2.1</version>
                <configuration>
                    <attach>true</attach>
                </configuration>
                <executions>
                    <execution>
                        <phase>compile</phase>
                        <goals>
                            <goal>jar</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>-->
 类似资料: