`
QING____
  • 浏览: 2253437 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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。

分享到:
评论
2 楼 QING____ 2013-11-20  
JEfuye 写道
hi,楼主你好,我有一个问题
设置
 <!-- 是否将classes文件部署成jar包 -->  
      <archiveClasses>true</archiveClasses>  
后,配置文件也会跟着部署到jar包里面,而properties配置文件又单独放到WEB-INF/classes下面,会不会引起冲突或哪个覆盖哪个?


如果你的web项目,在发布之后,有修改classes目录中的properties文件的可能,建议你archiveClasses = false.

但是如果早classes目录下和jar中,有相同命名的proerties文件(classpath的全路径名和文件名都一样),此时jar中的首先被加载,然后再加载classes目录下的,最终导致classes下的属性覆盖jar中的.
1 楼 JEfuye 2013-11-19  
hi,楼主你好,我有一个问题
设置
 <!-- 是否将classes文件部署成jar包 -->  
      <archiveClasses>true</archiveClasses>  
后,配置文件也会跟着部署到jar包里面,而properties配置文件又单独放到WEB-INF/classes下面,会不会引起冲突或哪个覆盖哪个?

相关推荐

    maven指令的使用方法

    ### Maven指令的使用方法 #### 一、Maven简介与安装 Maven 是一款非常流行的自动化构建工具,它主要用于 Java 项目的构建、依赖管理和项目信息管理。Maven 的设计哲学是约定优于配置,通过一系列内置的生命周期和...

    maven 操作命令

    java 项目编译通过maven命令进行操作,maven命令可以清理java项目的编译文件,编译,打war包,进而部署到Tomcat上。

    maven 3.5.2 maven 3.5.2 maven 3.5.2

    ** Maven 概述** Maven 是一个强大的项目管理和构建工具,广泛应用于Java开发领域。它通过使用一个统一的构建过程,简化了项目的构建、依赖管理以及文档生成等任务。Maven 3.5.2是Maven的一个稳定版本,包含了众多...

    maven安装maven安装maven安装maven安装maven安装

    maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装...

    开源工具Maven3.9.4版本压缩包

    Maven3.9.4版本压缩包,仅供学习参考,更新版本请前往Maven官方下载;Maven3.9.4版本压缩包,仅供学习参考,更新版本请前往Maven官方下载;Maven3.9.4版本压缩包,仅供学习参考,更新版本请前往Maven官方下载;Maven...

    maven API maven API

    Maven API使得开发者能够通过简单的命令行指令或者编程方式来执行构建任务,如编译、测试、打包、部署等。 **一、Maven API 的构成** 1. **Project Object Model (POM)**: Maven 项目的中心是POM,它是一个XML文件...

    使用Maven导入Maven工程的视频教程

    使用Maven导入Maven工程的视频教程 仅供学习交流! 后续会持续分享相关资源,记得关注哦! 使用Maven导入Maven工程的视频教程 使用Maven导入Maven工程的视频教程 使用Maven导入Maven工程的视频教程 使用Maven导入...

    apache-maven-3.6.0_apache-maven-3.6.0_maven压缩包_maven3.6.0下载_

    Apache Maven 是一个强大的项目管理和构建工具,主要用于Java项目。它基于项目对象模型(Project Object Model,POM)的概念,能够管理项目的构建、报告和文档。Maven 3.6.0是该工具的一个稳定版本,提供了许多改进...

    Windoiws的maven3.8.8

    **Windows环境下Maven 3.8.8的安装与配置** Maven是Apache软件基金会开发的一个项目管理和综合工具,主要用于Java项目的构建、依赖管理和文档生成。Maven 3.8.8是Maven的一个版本,它包含了对之前版本的一些改进和...

    maven之开源中国Maven库

    【标题】"maven之开源中国Maven库" 指的是使用 Maven,一个流行的Java项目管理和集成工具,与开源中国的Maven仓库进行交互。开源中国Maven库是中国的一个开源软件资源平台,提供了大量的开源Java库,使得开发者可以...

    Maven全版本资源,Maven 3.0.5-3.8.5,每个版本包含4个文件,Maven3全资源打包下载,Maven全集

    apache-maven-3.0.5 apache-maven-3.1.1 apache-maven-3.2.5 apache-maven-3.3.9 apache-maven-3.5.4 apache-maven-3.6.3 apache-maven-3.8.5 每个版本包含4个文件: apache-maven-3.8.5-bin.tar.gz apache-maven-...

    maven3.8下载包

    Maven的核心概念是Project Object Model(POM),这是一个XML文件,包含了项目的配置信息,如项目描述、依赖、构建指令等。通过POM,Maven能够自动下载项目所需的依赖库,执行编译、测试、打包等构建任务,使得开发...

    Mac的maven安装包apache-maven-3.6.3.zip

    在IT行业中,Maven是一个非常重要的工具,尤其对于Java开发者来说,它是项目管理和构建的首选。本篇将详细讲解如何在Mac系统上,特别是配备M1芯片的MacBook上安装Apache Maven 3.6.3。 Apache Maven是一个基于项目...

    官方下载maven-3.5.4

    Maven 使用 POM 文件来描述项目,POM 中包含了项目的属性、依赖、构建指令等信息。当运行 Maven 命令时,它会解析 POM 文件,并根据其中的配置执行相应的构建步骤,如编译源代码、运行测试、打包应用、部署等。Maven...

    maven.rar apache-maven-3.5.4

    Apache Maven 是一个强大的项目管理和构建工具,主要用于Java项目。它基于项目对象模型(Project Object Model,POM),能够管理项目的构建、报告和文档,通过一套统一的构建生命周期和插件系统,极大地简化了软件...

    Maven常用命令

    Maven常用命令 mvn archetype:create :创建 Maven 项目 mvn compile :编译源代码 mvn test-compile :编译测试代码 mvn test : 运行应用程序中的单元测试 mvn site : 生成项目相关信息的网站 mvn clean :清除...

    maven教程-maven教程-maven教程

    Maven是Java领域广泛使用的项目管理工具,它能够帮助开发者完成项目的构建、文档生成、报告、依赖管理和软件生命周期管理等工作。通过本文的介绍,我们可以了解到Maven的基本概念、安装配置、基本使用和深入应用详解...

    maven 3.8.8 解压安装版

    Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件。 Maven 除了以程序构建能力为特色之外,还提供高级项目管理工具。由于 Maven 的缺省构建规则有较高的可重用性,...

Global site tag (gtag.js) - Google Analytics