《Maven实战》全书总结

1. 两个操作

(1) maven的JVM参数的设置方法

Linux:在~/.bash_profile文件中添加

export MAVEN_OPTS="-Xms512m -Xmx1024m"

Windows:如下图

(2) 用户级别的maven配置

把MAVEN_HOME/conf/seettings.xml cp 到 ~/.m2/下,在.m2下的settings.xml中所作的配置就是用户级别的配置,而直接编辑MAVEN_HOME/conf/seettings.xml所作的配置是全局的配置

2. 涉及的maven命令

[mvn -v]: 查看maven版本
[mvn -h]: 查看帮助
[mvn help:system]: 查看java的系统属性和环境变量
[mvn help:active-profiles]: 查看激活的profile
[mvn help:all-profiles]: 列出所有的profile
[mvn help:effective-pom]: 查看项目的所有pom元素(包括父元素中的默认配置)
[mvn clean/compile/test/package/install/deploy]: maven的不同阶段的命令,可以互相组合使用
[mvn archetype:generate]: 创建项目骨架
[mvn dependency:list]: 显示项目中所有已解析依赖
[mvn dependency:tree]: 查看当前项目的依赖树
[mvn dependency:analyze]: 分析项目依赖
[mvn clean install-U]: 强制maven检查更新
[mvn help:describe -Dplugin=org.apache.maven.plugins:maven-source-plugin:3.0.1 -Ddetail]: 查看某插件的详细信息
[mvn help:describe -Dplugin=source]: 上一个命令的简写
[mvn help:describe -Dplugin=compile -Dgoal=compile]: 只查看goal相关的信息
[mvn install -Dmaven.test.skip=true]: 构建时跳过测试(不编译测试代码,不运行测试代码)
[mvn package -DskipTests]: 构建时跳过测试(编译测试代码,不运行测试代码)
[mvn clean install -pl module1,module2]: 构建指定的模块
[mvn clean install -pl module -am]: 构建指定模块及其依赖的模块
[mvn clean install -pl module -amd]: 构建指定模块及依赖其的模块
[mvn clean install -rf module]: 在完整的反应堆构建顺序基础上指定从哪个模块开始构建
[mvn clean install -pl module1 -amd -rf module2]: 构建module1以及依赖其的模块,并且从module2开始构建
[mvn clean install -P dev]: 激活id为dev的profile
[mvn clean install -P profile1,profile2]: 激活多个profile
[mvn clean install -Dkey=value]: 设置系统属性值
[mvn test -Dtest=A]: 测试A类
[mvn test -Dtest=A*B]: 测试以A开头B结尾的类
[mvn test -Dtest=A,B]: 测试A类和B类
[mvn test -Dtest=A*B,C]: 测试以A开头B结尾的类以及C类
[mvn test -Dtest -DfailIfNoTests=false]: 即使没有运行测试也不要报错
[mvn cobertura:cobertura]: 生成测试覆盖率报告,文件为target/site/cobertura/index.html
[mvn jetty:run]: 使用jetty-maven-plugin进行测试
[mvn jetty:run -Djetty.port=9999]: 启动jetty服务进行测试,并指定端口号
[mvn cargo:start]: 发布war包到本地服务器
[mvn cargo:deploy]: 发布war包到远程服务器
[mvn release:clean]: 发布新版本前clean
[mvn release:prepare]: 发布新版本前的准备工作
[mvn release:prepare -DautoVersionSubmodules=true]: 子模块与父模块使用相同的版本
[mvn release:rollback]: prepare后如果发现错误,可以回滚
[mvn release:perform]: 发布新版本
[mvn release:branch -DbranchName=0.0.1 -DupdateBranchVersions=true -DupdateWorkingCopyVersions=false]: 创建分支,分支使用新版本,不更新主干(trunk)的代码
[mvn clean deploy -Dgpg.passphrase=passwd]: 发布已经签名的构件
[mvn gpg:sign-and-deploy-file -DgroupId=com.bonc.rdpe -DartifactId=maven001 -Dversion=0.0.1-SNAPSHOT -Dpomfile=target/maven001-0.0.1-SNAPSHOT.pom -Dfile=target/maven001-0.0.1-SNAPSHOT.jar -Durl=http://192.168.138.129:8081/repository/maven-snapshots/ -DrepositoryId=nexus-snapshots]: 发布没有签名的文件并对其签名
[mvn site]: 生成站点
[mvn site:stage -DstagingDirectory=D:\tmp]: 把站点预发布到某个临时文件夹下

3. settings.xml文件内容总结

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">

    <!--自定义本地仓库路径 -->
    <localRepository>path/to/maven/repo</localRepository>
    
    <!-- maven是否与用户交互 -->
    <interactiveMode>true</interactiveMode>

    <!-- 离线模式 -->
    <offline>false</offline>


    <!-- 设置自定义的解析插件元数据的地址,主要用于得到插件的前缀,简化mvn命令 -->
    <pluginGroups>
        <!-- 
        当插件的groupId为org.apache.maven.plugins和org.codehaus.mojo时
        插件的命令支持简写的形式,例如: mvn help:system
        其他插件如果你想要使用简写的命令,需要在这里声明该插件的groupId
        这里声明了jetty-maven-plugin的groupId,所以你可以简写该插件的命令,例如: mvn jetty:run
        如果不声明,完整的命令是这样的: mvn jetty:run -Dplugin=org.mortbay.jetty:jetty-maven-plugin:8.1.16.v20140903
        -->
        <pluginGroup>org.eclipse.jetty</pluginGroup>
        <pluginGroup>com.your.plugins</pluginGroup>
    </pluginGroups>

    <!-- 设置HTTP代理 -->
    <proxies>
        <proxy>
            <id>dev3-proxy</id>
            <active>true</active>
            <protocol>http</protocol>
            <username>root</username>
            <password>root</password>
            <host>172.16.13.185</host>
            <port>9999</port>
            <nonProxyHosts>https://repo.maven.apache.org/maven2|*.google.com</nonProxyHosts>
        </proxy>
    </proxies>

    <!-- 配置仓库的认证信息 -->
    <servers>
        <server>
            <id>nexus-releases</id>
            <username>hadoop</username>
            <password>hadoop</password>
        </server>
        <server>
            <id>nexus-snapshot</id>
            <username>hadoop</username>
            <password>hadoop</password>
        </server>
    </servers>

    <mirrors>
        <!-- 配置远程仓库的镜像:这是一个私服 -->
        <mirror>
            <id>Public Repositories</id>
            <name>Public Repositories</name>
            <!-- * 代表这个私服可以作为所有远程仓库的镜像 -->
            <mirrorOf>*</mirrorOf>
            <!-- 
            <mirrorOf>external:*</mirrorOf> : 匹配所有不在本机上的远程仓库
            <mirrorOf>repo1,repo2</mirrorOf> : 只匹配repo1和repo2这两个仓库
            <mirrorOf>*,!repo1</mirrorOf> : 匹配除了repo1之外的所有远程仓库
        -->
            <url>http://172.16.13.185:9000/nexus/content/groups/public/</url>
        </mirror>
        <!-- 阿里云的镜像 -->
        <mirror>
            <id>alimaven</id>
            <name>aliyun maven</name>
            <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
            <mirrorOf>central</mirrorOf>
        </mirror>
    </mirrors>

    <!-- 自定义的配置 -->
    <profiles>
        <!-- 激活方式1: 默认激活 -->
        <!-- 设置maven编译时的jdk版本 -->
        <profile>    
            <id>jdk-1.8</id>
            <activation>
                <!--默认为激活状态-->
                <activeByDefault>true</activeByDefault>
                <jdk>1.8</jdk>
            </activation>
            <properties>
                <maven.compiler.source>1.8</maven.compiler.source>
                <maven.compiler.target>1.8</maven.compiler.target>
                <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
            </properties>
        </profile>
        <!-- 激活方式2: 在activeProfiles中激活 -->
        <!-- 这是一个自定义的数据库配置 -->
        <profile>
            <id>profile1</id>
            <properties>
                <db.driver>com.mysql.jdbc.Driver</db.driver>
                <db.url>jdbc:mysql://192.168.138.101:3306/test</db.url>
                <db.username>dev</db.username>
                <db.password>dev-pwd</db.password>
            </properties>
        </profile>
        <!--激活方式3: 当系统属性的值为指定值时激活-->
        <!-- 
            下面这个profile在系统属性(one.of.system.property)为指定值(expected.value)时被激活
            你可以在命令行设置系统属性值: mvn clean install -Done.of.system.property=expected.value
        -->
        <profile>
            <id>profile2</id>
            <activation>
                <property>
                    <name>one.of.system.property</name>
                    <value>expected.value</value>
                </property>
            </activation>
            <properties>
                <!-- ...... -->
            </properties>
        </profile>
        <!-- 激活方式4: 根据操作系统的环境激活 -->
        <profile>
            <id>profile3</id>
            <activation>
                <os>
                    <name>Windows 10</name>
                    <family>Windows</family>
                    <arch>amd64</arch>
                    <version>10.0</version>
                </os>
            </activation>
            <properties>
                <!-- ...... -->
            </properties>
        </profile>
        <!-- 激活方式5: 基于文件存在与否激活: x.properties存在激活,y.properties不存在激活 -->
        <profile>
            <id>profile4</id>
            <activation>
                <file>
                    <exists>x.properties</exists>
                    <missing>y.properties</missing>
                </file>
            </activation>
            <properties>
                <!-- ...... -->
            </properties>
        </profile>

        <!-- 说明: 
            1. 如果有任意一个profile通过非默认的方式激活了,那么默认激活的profile就会失效 
            2. 在settings.xml中设置的profile不允许修改大部分pom元素,比如声明依赖或修改插件,而在项目中pom.xml中的profile中,可以修改pom原始的配置,比如maven的那些默认路径配置
        -->
    </profiles>

    <!-- 激活已经配置的profile -->
    <activeProfiles>
        <activeProfile>dev</activeProfile>
    </activeProfiles>

</settings>

4. pom.xml文件内容总结

<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 http://maven.apache.org/xsd/maven-4.0.0.xsd">

    <modelVersion>4.0.0</modelVersion>
    <groupId>com.bonc.rdpe</groupId>
    <artifactId>maven001</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <!-- 打包类型为jar,默认为jar,web项目应该是war,其他还有: maven-plugin/ear/pom等 -->
    <packaging>jar</packaging>
    <!--附属构件,不能直接定义 -->
    <classifier></classifier>
    <name>maven001</name>

    <!-- 自定义maven属性 -->
    <properties>
        <hadoop.version>2.7.6</hadoop.version>
        <junit.version>4.7</junit.version>
        <spark.version>2.3.0</spark.version>
        <springframework.version>2.5.6</springframework.version>
    </properties>

    <repositories>
        <!-- maven中央仓库,不需要配置,这里是为了说明各配置的功能 -->
        <repository>
            <!-- id值必须唯一,否则会覆盖 -->
            <id>central</id>
            <name>Central Repository</name>
            <url>https://repo.maven.apache.org/maven2</url>
            <layout>default</layout>
            <releases> 
                <!-- 下载发布版构件 -->
                <enabled>true</enabled>
                <!-- 
                    Maven 从远程仓库更新的频率
                    never(从不)
                    daily(每天一次,默认)
                    always(每次构建都检查更新)
                    interval:X(每隔X分钟检查一次,X为任意整数) 
                -->
                <updatePolicy>never</updatePolicy>
                <!-- 
                    检验文件的策略,如果校验失败: 
                    warn(默认):输出警告信息
                    fail: 构建失败)
                    ignore: 忽略 
                -->
                <checksumPolicy>warn</checksumPolicy>
            </releases> 
            <snapshots>
                <!-- 不从中央仓库下载快照版本的构件 -->
                <enabled>false</enabled>
            </snapshots>
        </repository>
        <!-- JBOSS Maven 仓库 -->
    </repositories>

    <!-- 配置下载插件的远程仓库,各配置和repositories中的意义是一样的 -->
    <pluginRepositories>
        <pluginRepository>
            <id></id>
            <name></name>
            <url></url>
            <layout></layout>
            <releases>
                <updatePolicy></updatePolicy>
            </releases>
            <snapshots>
                <enabled></enabled>
            </snapshots>
        </pluginRepository>
    </pluginRepositories>

    <!-- 项目输出的构件部署的远程仓库 -->
    <distributionManagement>
        <!-- 发布版的构件部署的仓库 -->
        <repository>
            <id>dev3-repository</id>
            <name>Dev3 Release Repository</name>
            <url>http://172.16.13.185:9000/nexus/content/repositories/releases/</url>
        </repository>
        <!-- 快照版的构件部署的仓库 -->
        <snapshotRepository>
            <id>dev3-snapshots-repository</id>
            <name>Dev3 Snapshot Repository</name>
            <url>http://172.16.13.185:9000/nexus/content/repositories/snapshots/</url>
        </snapshotRepository>
    </distributionManagement>

    <!-- 在这里声明的依赖会被子模块继承,但是,不是声明了就一定会被继承,如果子模块不引入这些依赖,就不会强制加给子模块 -->
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-core</artifactId>
                <version>${springframework.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-beans</artifactId>
                <version>${springframework.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context</artifactId>
                <version>${springframework.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context-support</artifactId>
                <version>${springframework.version}</version>
            </dependency>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>${junit.version}</version>
                <scope>test</scope>
            </dependency>
            <!-- 合并其他maven工程中的dependencyManagement下定义的依赖到本模块的dependencyManagement下 -->
            <dependency>
                <groupId>com.bonc.rdpe</groupId>
                <artifactId>account-xxx</artifactId>
                <version>0.0.1-SNAPSHOT</version>
                <!--import 只能用在dependencyManagement中,且目标POM的packaging必须为pom,这里的type也只能为pom-->
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <!-- 本模块使用的构件 -->
    <dependencies>
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-sql_2.11</artifactId>
            <version>${spark.version}</version>
            <!-- 依赖类型,默认是jar,而且绝大部分为jar,不需要配置 -->
            <type>jar</type>
            <!-- 依赖范围,默认compile,可以是test/provided/runtime/system,当为system时需要systemPath指定jar包路径-->
            <scope>system</scope>
            <systemPath>${JAVA_HOME}/lib/rt.jar</systemPath>
            <!-- 是否可选,默认false,如果是ture,则当其他项目依赖此项目时,其他项目不会依赖这个jar包,不建议在项目中使用可选依赖 -->
            <optional>true</optional>
            <exclusions>
                <!--排除掉spark-sql_2.11-2.3.0.jar依赖的hadoop-client-x.x.x.jar -->
                <exclusion>
                    <groupId>org.apache.hadoop</groupId>
                    <artifactId>hadoop-client</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <!-- 排除掉spark-sql依赖的jar后,需要手动添加项目需要的版本的hadoop-client包 -->
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-client</artifactId>
            <version>${hadoop.version}</version>
        </dependency>
    </dependencies>

    <!-- maven工程需要的额外配置 -->
    <!--
        以下例子为: 配置了两套不同的数据库环境
        开发人员和测试人员使用时可以根据自己的角色激活对应profile
    -->
    <profiles>
        <profile>
            <id>dev</id>
            <properties>
                <db.driver>com.mysql.jdbc.Driver</db.driver>
                <db.url>jdbc:mysql://192.168.138.101:3306/dev</db.url>
                <db.username>dev</db.username>
                <db.password>dev-pwd</db.password>
            </properties>
        </profile>
        <profile>
            <id>dev</id>
            <properties>
                <db.driver>com.mysql.jdbc.Driver</db.driver>
                <db.url>jdbc:mysql://192.168.138.101:3306/test</db.url>
                <db.username>test</db.username>
                <db.password>test-pwd</db.password>
            </properties>
        </profile>
    </profiles>

    <build>
        <!-- 在这里声明的插件会被子模块继承 -->
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <configuration>
                        <source>1.8</source>
                        <target>1.8</target>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-resources-plugin</artifactId>
                    <configuration>
                        <encoding>UTF-8</encoding>
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>

        <plugins>

            <!-- 以下是一些maven的默认路径配置,你可以自定义,但不建议 -->
            <!-- 主输出目录 -->
            <directory>${project.basedir}/target</directory>
            <!-- 主代码输出目录 -->
            <outputDirectory>${project.build.directory}/classes</outputDirectory>
            <!-- 最终构建的名称格式 -->
            <finalName>${project.artifactId}-${project.version}</finalName>
            <!-- 测试代码输出目录 -->
            <testOutputDirectory>${project.build.directory}/test-classes</testOutputDirectory>
            <!-- 主源码目录 -->
            <sourceDirectory>${project.basedir}/src/main/java</sourceDirectory>
            <!-- 脚本源码目录 -->
            <scriptSourceDirectory>src/main/scripts</scriptSourceDirectory>
            <!-- 测试源码目录 -->
            <testSourceDirectory>${project.basedir}/src/test/java</testSourceDirectory>
            <!-- 主资源目录 -->
            <resources>
                <resource>
                    <directory>${project.basedir}/src/main/resources</directory>
                    <!-- 开启资源过滤,作用: 开启后,资源目录下的配置为文件中就可以识别profile中定义的maven属性 -->
                    <filtering>true</filtering>
                </resource>
            </resources>
            <!-- 测试资源目录 -->
            <testResources>
                <testResource>
                    <directory>${project.basedir}/src/test/resources</directory>
                    <filtering>true</filtering>
                </testResource>
            </testResources>

            <!-- maven编译插件 -->
            <plugin>
                <!-- 如果插件的groupId=org.apache.maven.plugins,可以省略 -->
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <!-- 如果没有设置插件版本,maven会获取最新的发布版 -->
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <!-- 是否跳过测试代码的编译,默认为false,不建议设置为true -->
                    <skip>true</skip>
                </configuration>
            </plugin>

            <!-- maven源码生成插件 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-source-plugin</artifactId>
                <!-- 对于自定义绑定的插件,建议手动指定一个非快照的版本 -->
                <version>3.0.1</version>
                <executions>
                    <!-- 每个execution用来配置一个任务 -->
                    <execution>
                        <id>attach-source</id>
                        <!-- 绑定到default生命周期的verify阶段 -->
                        <phase>verify</phase>  
                        <!-- 任务目标 -->
                        <goals>  
                            <goal>jar-no-fork</goal>  
                        </goals>
                    </execution>
                </executions>
            </plugin>

            <!-- maven打包插件: 相对于默认的maven-jar-plugin,这个插件打的包是可执行的 -->
            <plugin>  
                <groupId>org.apache.maven.plugins</groupId>  
                <artifactId>maven-shade-plugin</artifactId>  
                <version>3.1.1</version>  
                <executions>  
                    <execution>  
                        <phase>package</phase>  
                        <goals>  
                            <goal>shade</goal>  
                        </goals>  
                        <configuration>  
                            <transformers>
                                <!--设置主类-->
                                <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">  
                                    <mainClass>com.bonc.rdpe.maven001.HelloWorld</mainClass>  
                                </transformer>  
                            </transformers>  
                        </configuration>  
                    </execution>  
                </executions>  
            </plugin>

            <!-- maven默认的打包插件 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>3.1.0</version>
                <executions>
                    <execution>
                        <goals>
                            <!-- 设置打包的时候把测试代码也打包,默认为jar(即只打包主代码) -->
                            <goal>test-jar</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

            <!-- web项目打包插件 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>3.2.2</version>
                <configuration>
                    <webResources>
                        <webResource>
                            <directory>src/main/webapp</directory>
                            <filtering>true</filtering>
                            <!-- 所有的css文件和js文件或被打到war包中 -->
                            <includes>
                                <include>**/*.css</include>
                                <include>**/*.js</include>
                            </includes>
                        </webResource>
                    </webResources>
                </configuration>
            </plugin>

            <!-- maven测试插件 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.22.0</version>
                <configuration>
                    <!-- 修改了测试报告的存放为位置,默认为${project.build.directory}/surefire-reports -->
                    <reportsDirectory>${project.build.directory}    est-reports</reportsDirectory>
                    <!-- 是否跳过测试代码的运行,默认为false,不建议设置为true -->
                    <skipTests>true</skipTests>
                    <!-- 
                        默认情况下,maven会测试以Test开头和结尾、以TestCase结尾的类
                        你可以设置让maven测试不符合测试类命名规范的类
                        **/*Tests.java: 测试任意路径下的以Tests结尾的类
                    -->
                    <includes>
                        <include>**/*Tests.java</include>
                    </includes>
                    <!-- 
                        当然,也可以设置排除掉一些测试类
                        **/*ServiceTest.java: 任意路径下的ServiceTest结尾的类都不会测试
                        **/ArrayTest.java: 任意路径下的ArrayTest这个类都不会被测试
                    -->
                    <excludes>
                        <exclude>**/*ServiceTest.java</exclude>
                        <exclude>**/ArrayTest.java</exclude>
                    </excludes>
                    <!-- 
                        可以在外部自定义的xml文件来设置测试哪些类,这里的配置用来声明该外部文件的位置
                        这个功能需要使用TestNG这个jar包,而不是JUnit
                    -->
                    <suiteXmlFiles>
                        <suiteXmlFile>testng.xml</suiteXmlFile>
                    </suiteXmlFiles>
                    <!-- 
                        @Test方法可以声明其属于哪个组,这个设置测试哪些组中的方法,例如
                        @Test(groups = {"group1"}) public void testXXX() {...}
                        这个功能需要使用TestNG这个jar包,而不是JUnit 
                    -->
                    <groups>group1</groups>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

5. 超级pom

<?xml version="1.0" encoding="UTF-8"?>

<project>

    <modelVersion>4.0.0</modelVersion>

    <repositories>
        <repository>
            <id>central</id>
            <name>Central Repository</name>
            <url>https://repo.maven.apache.org/maven2</url>
            <layout>default</layout>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
    </repositories>

    <pluginRepositories>
        <pluginRepository>
            <id>central</id>
            <name>Central Repository</name>
            <url>https://repo.maven.apache.org/maven2</url>
            <layout>default</layout>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
            <releases>
                <updatePolicy>never</updatePolicy>
            </releases>
        </pluginRepository>
    </pluginRepositories>

    <build>
        <directory>${project.basedir}/target</directory>
        <outputDirectory>${project.build.directory}/classes</outputDirectory>
        <finalName>${project.artifactId}-${project.version}</finalName>
        <testOutputDirectory>${project.build.directory}/test-classes</testOutputDirectory>
        <sourceDirectory>${project.basedir}/src/main/java</sourceDirectory>
        <scriptSourceDirectory>${project.basedir}/src/main/scripts</scriptSourceDirectory>
        <testSourceDirectory>${project.basedir}/src/test/java</testSourceDirectory>
        <resources>
            <resource>
                <directory>${project.basedir}/src/main/resources</directory>
            </resource>
        </resources>
        <testResources>
            <testResource>
                <directory>${project.basedir}/src/test/resources</directory>
            </testResource>
        </testResources>
        
        <pluginManagement>

            <plugins>
                <plugin>
                    <artifactId>maven-antrun-plugin</artifactId>
                    <version>1.3</version>
                </plugin>
                <plugin>
                    <artifactId>maven-assembly-plugin</artifactId>
                    <version>2.2-beta-5</version>
                </plugin>
                <plugin>
                    <artifactId>maven-dependency-plugin</artifactId>
                    <version>2.8</version>
                </plugin>
                <plugin>
                    <artifactId>maven-release-plugin</artifactId>
                    <version>2.5.3</version>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>

    <reporting>
        <outputDirectory>${project.build.directory}/site</outputDirectory>
    </reporting>

    <profiles>

        <profile>
            <id>release-profile</id>
            <activation>
                <property>
                    <name>performRelease</name>
                    <value>true</value>
                </property>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <inherited>true</inherited>
                        <artifactId>maven-source-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>attach-sources</id>
                                <goals>
                                    <goal>jar</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <inherited>true</inherited>
                        <artifactId>maven-javadoc-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>attach-javadocs</id>
                                <goals>
                                    <goal>jar</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <inherited>true</inherited>
                        <artifactId>maven-deploy-plugin</artifactId>
                        <configuration>
                            <updateReleaseInfo>true</updateReleaseInfo>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>

</project>

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏java达人

EasyUI 创建 CRUD 应用

数据收集并妥善管理数据是网络应用共同的必要。CRUD 允许我们生成页面列表,并编辑数据库记录。本教程将向你演示如何使用 jQuery EasyUI 框架实现一个...

26070
来自专栏我的博客

TP入门第五天

1、数据库连接 这里说下为和用到配置都是返回数组,$arr=include(‘config.php’);然后你打印出来看看! 配置文件(有两种连接方法) 第一种...

32440
来自专栏玄魂工作室

kali linux Python 黑客编程1 开发环境

初始化 为什么要选择Python? Python作为目前Linux系统下最流行的编程语言之一,对于安全工作者的作用可以和C++相提并论。Python提供了丰富的...

76160
来自专栏文渊之博

SQLServer 延迟事务持久性

SQL Server 2014新功能 -- 延迟事务持久性(Delayed Transaction Durability) SQL Server事务提交默认...

26280
来自专栏小俊博客

DNSmasq详细解析及详细配置

Dnsmasq 提供 DNS 缓存和 DHCP 服务功能。作为域名解析服务器(DNS),dnsmasq可以通过缓存 DNS 请求来提高对访问过的网址的连接速度。...

17.2K30
来自专栏nice_每一天

理解 IntelliJ IDEA 的项目配置和Web部署

IDEA 中最重要的各种设置项,就是这个 Project Structre 了,关乎你的项目运行,缺胳膊少腿都不行。最近公司正好也是用之前自己比较熟悉的IDEA...

64620
来自专栏惨绿少年

KICKSTART无人值守安装

1.1 环境说明 [root@test ~]# cat /etc/redhat-release CentOS release 6.9 (Final) [roo...

31200
来自专栏解Bug之路

Druid连接管理分析

        Druid有且只有一个线程来创建连接,为了防止不必要的线程时间片的消耗,其采用了await()/notify()的方式,当其创建了足够的多的连接...

18320
来自专栏Hadoop实操

3.如何实现OpenLDAP的主主同步

前面Fayson文章讲《1.如何在CentOS6.5安装OpenLDAP并配置客户端》以及《2.OpenLDAP集成SSH登录并使用SSSD同步用户》,那么如何...

64750
来自专栏张首富-小白的成长历程

用户相关的文件及命令

Linux system每个文件和进程,都需要对应一个用户和组, Linux system是通过UID和GID来识别用户和组的。用户名相当于人名,UID相当于×...

14740

扫码关注云+社区

领取腾讯云代金券