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匹配的资源文件,将被忽略。