构建Maven项目的时候,如果没有进行特殊的配置,Maven会按照标准的目录结构查找和处理各种类型文件。
第一步:
src/main/java和src/test/java(代码) 这两个目录中的所有*.java文件会分别在comiple和test-comiple阶段被编译,编译结果分别放到了target/classes和targe/test-classes目录中
src/main/resouces和src/test/resources(配置)
这两个目录中的文件也会分别被复制到target/classes和target/test-classes目录中。
第二步:
生成工程文件目录
target/classes 里面的内容会被组织成相关的工程结构,生成一个工程文件夹
第三步:
把工程文件加压缩打包成jar或者war文件
最终target的目录结构如下:
🐌---🐌---🐌---🐌---🐌---🐌---🐌---🐌---🐌---🐌---🐌---🐌---🐌---🐌---🐌---🐌---🐌---🐌---🐌---🐌---🐌---🐌---🐌---🐌
一般情况下整个打包顺序都是按照上面三个步骤完成的。所以这就给我们提供了很多操作性
如果想在打包的时候加入配置文件或者其他文件,我们可以在打包步骤(第三步)执行之前将文件给准备好。
下边就通过配置将外部系统的配置文件打包到工程文件夹里。需要使用配置资源处理插件
(这里目的就是第一步将需要的配置放到classes下,我这里具体就是打包的时候将依赖的my-one工程的配置文件applicationContext.xml 复制到本工程的 classes 下)
<build>
<plugins>
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>2.5</version>
<executions>
<execution>
<id>copy-properties</id>
<phase>process-sources</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<!-- 这里表示资源复制的目标地址 -->
<!-- ${basedir} 项目的根目录,这个值可以缺省 -->
<outputDirectory>${basedir}/target/classes</outputDirectory>
<resources>
<resource>
<!-- 可以使用相对路径或者绝对路径-->
<!-- my-one 和本工程是在同一个目录下 -->
<directory>${basedir}\..\my-one\target\classes</directory>
<includes>
<!-- 需要复制的文件 -->
<include>applicationContext.xml</include>
</includes>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>