使用Maven那么久了,你对企业级Maven的核心配置了解多少? (2)

system 的通常使用方式

<dependency> <groupId>com.sun</groupId> <artifactId>tools</artifactId> <version>${java.version}</version> <scope>system</scope> <optional>true</optional> <systemPath>${java.home}/../lib/tools.jar</systemPath> </dependency>

system 另外使用方式 ,将工程内的jar直接引入

<dependency> <groupId>jsr</groupId> <artifactId>jsr</artifactId> <version>3.5</version> <scope>system</scope> <optional>true</optional> <systemPath>${basedir}/lib/jsr305.jar</systemPath> </dependency>

通过插件 将system 的jar 打包进去

<plugin> <groupId>org.apache.maven.plugins</groupId>\ <artifactId>maven-dependency-plugin</artifactId> <version>2.10</version> <executions> <execution> <id>copy-dependencies</id> <phase>compile</phase> <goals> <goal>copy-dependencies</goal> </goals> <configuration> <outputDirectory>${project.build.directory}/${project.build.finalName}/WEB-INF/lib</outputDirectory> <includeScope>system</includeScope> <excludeGroupIds>com.sun</excludeGroupIds> </configuration> </execution> </executions> </plugin>

手动加入本地仓库

mvn install:install-file -Dfile=mykit-transaction-message.jar -DgroupId=io.mykit -DartifactId=mykit-transaction-message -Dversion=1.0.0-RELEASE -Dpackaging=jar 项目聚合与继承 聚合

聚合是指将多个模块整合在一起,统一构建,避免一个一个的构建。聚合需要个父工程,然后使用 <modules></modules> 进行配置其中对应的是子工程的相对路径。例如下面的配置。

<modules> <module>mykit-dao</module> <module>mykit-service</module> </modules> 继承

继承是指子工程直接继承父工程 当中的属性、依赖、插件等配置,避免重复配置。继承包括如下几种方式。

属性继承

依赖继承

插件继承

注意:上面的三个配置子工程都可以进行重写,重写之后以子工程的为准。

依赖管理

通过继承的特性,子工程是可以间接依赖父工程的依赖,但多个子工程依赖有时并不一至,这时就可以在父工程中加入<dependencyManagement></dependencyManagement> 声明该工程需要的JAR包,然后在子工程中引入。例如下面的配置。

<!-- 父工程中声明 junit 4.12 --> <dependencyManagement> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> </dependency> </dependencies> </dependencyManagement> <!-- 子工程中引入 --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> </dependency> 项目属性

通过 <properties></properties> 配置属性参数,可以简化配置。例如下面的配置。

<!-- 配置proName属性 --> <properties> <projectName>projectName</projectName> </properties>

我们可以在pom.xml文件中使用下面的形式来引入配置的参数。

${projectName}

接下来,我们再来看几个Maven的默认属性,如下所示。

${basedir} 项目根目录

${version}表示项目版本;

${project.basedir}同${basedir};

${project.version}表示项目版本,与${version}相同;

${project.build.directory} 构建目录,缺省为target

${project.build.sourceEncoding}表示主源码的编码格式;

${project.build.sourceDirectory}表示主源码路径;

${project.build.finalName}表示输出文件名称;

${project.build.outputDirectory} 构建过程输出目录,缺省为target/classes

项目构建配置 构建资源配置

基本配置示例:

<defaultGoal>package</defaultGoal> <directory>${basedir}/target2</directory> <finalName>${artifactId}-${version}</finalName>

说明:

defaultGoal:执行构建时默认的goal或phase,如jar:jar或者package等

directory:构建的结果所在的路径,默认为${basedir}/target目录

finalName:构建的最终结果的名字,该名字可能在其他plugin中被改变

resources 配置示例 <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.MF</include> <include>**/*.xml</include> </includes> <filtering>true</filtering> </resource> <resource> <directory>src/main/resources</directory> <includes> <include>**/*</include> <include>*</include> </includes> <filtering>true</filtering> </resource> </resources>

说明:

resources:build过程中涉及的资源文件

targetPath:资源文件的目标路径

directory:资源文件的路径,默认位于${basedir}/src/main/resources/目录下

includes:一组文件名的匹配模式,被匹配的资源文件将被构建过程处理

excludes:一组文件名的匹配模式,被匹配的资源文件将被构建过程忽略。同时被includes和excludes匹配的资源文件,将被忽略。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wsfjzx.html