Maven指令备忘

一. 常用指令

    1) 生成eclipse项目: mvn clean eclipse:clean eclipse:eclipse

        如果构建项目时需要下载依赖包的源文件,需要在此后追加"-DdownloadSources=true"

    2) 部署到本地库: mvn clean source:jar install -Dmaven.test.skip=true

        source:jar表示生成源文件(*-source.jar)

    3) 通过指令生成maven项目: mvn archetype:create -DgroupId=com.test.demo -DartifactId=test

        如果要生成一个web项目,需要在此后追加"-DarchetypeArtifactId=maven-archetype-webapp"

 

二.常用插件

    1) compiler: 编译源文件

<plugin>
	<groupId>org.apache.maven.plugins</groupId>
	<artifactId>maven-compiler-plugin</artifactId>
	<version>3.1</version>
	<configuration>
	  <source>1.6</source>
	  <target>1.6</target>
	</configuration>
</plugin>

    可以通过"mvn compiler:compiler"来编译,[参考]

    2) resources: 打包时将resource文件拷贝到classpath下

<resources>
	<resource>
		<directory>src/main/resources</directory>
                <!-- 部署jar时,将会排除exclude下的文件进入jar,在web项目中,通常将properties文件排除在jar之外,而是放在classes文件中(参见war插件) -->
		<excludes>
			<exclude>*.properties</exclude>
		</excludes>
		<filtering>true</filtering>
	</resource>
</resources>
<plugin>
	<groupId>org.apache.maven.plugins</groupId>
	<artifactId>maven-resources-plugin</artifactId>
	<version>2.6</version>
	<configuration>
	  <encoding>UTF-8</encoding>
	</configuration>
</plugin>

    [参考] 

   3) jar: 将项目打包成jar,也可以是"可运行的java"程序

<plugin>
	<groupId>org.apache.maven.plugins</groupId>
	<artifactId>maven-jar-plugin</artifactId>
	<configuration>
	  <archive>
		<manifest>
		  <!-- 是否将项目的classpath添加到manifest-->
		  <addClasspath>true</addClasspath>
		  <!-- 指定main方法 -->
		  <mainClass>com.test.MainClass</mainClass>
		</manifest>
	  </archive>
	</configuration>
</plugin>

    可以通过"mvn jar:jar"运行打包为jar文件,[参考]

    4) war: 将项目打包为war

<plugin>
	<groupId>org.apache.maven.plugins</groupId>
	<artifactId>maven-war-plugin</artifactId>
	<version>2.4</version>
	<configuration>
          <!-- 是否将classes文件部署成jar包 -->
	  <archiveClasses>true</archiveClasses>
	  <webResources>
		<resource>
		  <!-- 相对pom.xml的目录 -->
		  <directory>src/main/resources/</directory>
		  <!-- 文件目标位置 -->
		  <targetPath>WEB-INF/classes</targetPath>
		  <includes>
			<include>*.xml</include>
			<include>*.properties</include>
		  </includes>
		  <!--
		  <excludes>
			<exclude>**/image2</exclude>
		  </excludes>
		  -->
		</resource>
	  </webResources>
	</configuration>
</plugin>

    可以通过"mvn war:war"来生成文件,[参考] 

    5) source: 生成source文件

<plugin>
	<groupId>org.apache.maven.plugins</groupId>
	<artifactId>maven-source-plugin</artifactId>
	<version>2.2.1</version>
	<configuration>
	  <!-- 相对当前的输出路径 ,默认在target下
	  <outputDirectory>target/</outputDirectory>
	  -->
	  <!-- 生成的文件名称,默认为"<build>.<fileName>-source.jar"
	  <finalName>tttt.jar</finalName>
	  -->
	  <attach>false</attach>
	</configuration>
</plugin>

   可以通过"mvn source:jar"等指令运行,可以通过追加"javadoc:javadoc"生成javadoc文件,[参考]  

    6) eclipse/IDEA:

    可以通过"mvn eclipse:eclipse" 或者"mvn idea:idea"生成相应的工程,[参考]

 

三. 将项目发布到nexus上.

   1) 在maven的setting.xml中新增服务

<servers>
	<server>  
      <id>nexus-releases</id>  
      <username>admin</username>  
      <password>admin123</password>  
    </server>  
    <server>  
      <id>nexus-snapshots</id>  
      <username>admin</username>  
      <password>admin123</password>  
    </server>
</servers>
<!-- 项目依赖包库 -->
<profiles>
	<profile>
		<id>dev</id>
          <repositories>
             <repository>
                 <id>nexus</id>
                 <url>http://192.168.0.132:8080/nexus/content/groups/public/</url>
                 <releases>
                    <enabled>true</enabled>
                 </releases>
                 <snapshots>
                    <enabled>true</enabled>
                 </snapshots>
              </repository>
            </repositories>           
            <pluginRepositories>
                <pluginRepository>
                    <id>nexus</id>
					<url>http://192.168.0.132:8080/nexus/content/repositories/central/</url>
                    <releases>
                        <enabled>true</enabled>
                    </releases>
                    <snapshots>
                        <enabled>true</enabled>
                    </snapshots>
                </pluginRepository>
            </pluginRepositories>
    </profile>
</profiles>
<activeProfiles>
	<activeProfile>dev</activeProfile>
</activeProfiles>

    2) pom.xml文件中指定发布目标位置:

<distributionManagement>
	<repository>
		<id>nexus-releases</id><!-- 和setting.xml对应 -->
		<url>http://192.168.0.132:8080/nexus/content/repositories/releases/</url>
	</repository>
</distributionManagement>

    使用"mvn source:jar deploy"即可;建议将开发过程中的jar发布到snapshot中,同时如果nexus设定了"Disable reploy"(不允许重复发布),将会导致同一个版本的项目不能被多次发布(400错误).  

 

四、其他

    如何在子pom中覆盖父pom中plugin的configuration。示例:

    1、父pom中声明

<plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <configuration>
            		<excludes>
                        <exclude>**/*.properties</exclude>
                    </excludes>
            </configuration>
</plugin>

 

    2、子pom中

<parent>
        <groupId>com.demo</groupId>
        <artifactId>super-pom</artifactId>
        <version>1.0-SNAPSHOT</version>
</parent>
....
<plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <configuration combine.self="override">
        </configuration>
</plugin>

 

    此时,子pom就可以覆盖super-pom中的plugin的配置了;默认情况下,子pom会继承父pom中的所有配置,并进行merge。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值