转载地址:http://blog.csdn.net/stormragewang/article/details/43407471

心得

apache的开源maven插件对我们使用maven进行打包,发布的流程简化了不少。开源插件帮我们减少了了解详细流程的工作量,那么同时肯定会带来熟悉各个插件默认配置的麻烦,以下是最近使用maven插件的一些心得。
  • 我们在创建工程是的命名最好遵从maven工程的习惯,尤其是artifactId。虽然你后面可以修改配置文件来修改打包后的jar或war包名,但是使用maven-delpoy-plugin插件时,默认上传的就是artifactId开头的,目前我还没有找到好的解决办法。
  • 网上有介绍使用maven-war-plugin的overlay属性来合并多个web工程,但是overlay只是合并资源文件,并不能合并web.xml,参考http://java.dzone.com/articles/mavens-war-overlay-what-are。我后来找到了cargo-maven2-plugin插件,其介绍在http://cargo.codehaus.org/Merging+WAR+files
  • 一般常用的插件有:发布jar到私有库,会用到maven-deploy插件;同时发布源码会用到maven-source-plugin插件;合并多个web工程会用到cargo-maven-plugin插件。

maven-deploy-plugin插件

1、首先在nexus私有库中创建一个可以上传jar包的用户。我先创建了一个角色,再创建一个上传的用户,这样其他项目组的成员可以重用这个角色的配置。
创建用户
2、在个人maven配置文件中添加该用户的信息
setting.xml
3、在maven工程的pom.xml配置部署的仓库,注意pom.xml和setting.xml中的id属性要一致
 <distributionManagement>
<repository>
<id>packaging-releases</id>
<name>Packaging Release Repository</name>
<url>http://127.0.0.1:8081/nexus/content/repositories/packaging-release/</url>
</repository>
<snapshotRepository>
<id>packaging-snapshots</id>
<name>Packaging Snapshot Repository</name>
<url>http://127.0.0.1:8081/nexus/content/repositories/packaging-snapshot/</url>
</snapshotRepository>
</distributionManagement>

这样就可以将自己的jar包部署到私有库中了,将maven工程的SNAPSHO后缀删除后自动发布到Release属性的仓库,之前默认的是Snapshot属性的仓库。

maven-source-plugin插件

要想在部署jar包到私有库的同时上传源码包,修改一下maven工程的pom.xml文件就可以,添加以下内容

     <build>
<finalName>${project.artifactId}</finalName>
<plugins>
<plugin>
<artifactId>maven-source-plugin</artifactId>
<version>2.2.1</version>
<executions>
<execution>
<id>attach-sources</id>
<phase>verify</phase>
<goals>
<goal>jar-no-fork</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
再部署时,就会自动上传源码包了

cargo-maven2-plugin插件

当我们需要和并多个war包时,使用cargo-maven2-plugin可以自动帮我们合并web.xml
1、添加cargo-maven2-plugin插件,其中descriptor指向配置文件
         <plugins>
<plugin>
<groupId>org.codehaus.cargo</groupId>
<artifactId>cargo-maven2-plugin</artifactId>
<version>1.1.3</version>
<extensions>true</extensions>
<configuration>
<descriptor>src/assemble/merge.xml</descriptor>
</configuration>
</plugin>
</plugins>
2、配置文件src/assemble/merge.xml配置如下
 <?xml version="1.0" encoding="UTF-8"?>
<uberwar>
<wars>
<war>com.hust.wnlo.dsis.ipackaging:user.web</war>
<war>com.hust.wnlo.dsis.ipackaging:commodity.web</war>
</wars>
<webXml>
<contextParams>
<strategy name="ChooseByName">
<default>
<strategy name="Preserve" />
</default>
<choice name="contextConfigLocation">
<strategy name="NodeMerge">
<context-param>
<param-name>$left:param-name</param-name>
<param-value>$left:param-value $right:param-value</param-value>
</context-param>
</strategy>
</choice>
</strategy>
</contextParams>
</webXml>
</uberwar>


3、使用cargo:uberwar合并这2个war包

输出日志如下

maven打包部署到私服的更多相关文章

  1. Idea开发环境中搭建Maven并且使用Maven打包部署程序

    1.配置Maven的环境变量 a.首先我们去maven官网下载Maven程序,解压到安装目录,如图所示: b.配置M2_HOME的环境变量,然后将该变量添加到Path中 备注:必须要有JAVA_HOM ...

  2. Maven 打包项目到私服 (deploy)

    一.配置maven 在maven安装目录 /conf/setting.xml 中的servers下添加: 1 <servers> 2 <server> 3 <id> ...

  3. Maven打包部署

    Maven打Jar包 问题一 Eclipse突然SB告诉我类不存在还让我导包进来O__O "…,但是我明明有这个类.这是不要慌,通过在网上搜索得知:由于eclipse的编译是基于时间戳的判断 ...

  4. (IDEA) 搭建Maven并使用Maven打包部署

    1.配置Maven的环境变量 a.首先我们去maven官网下载Maven程序,解压到安装目录,如图所示: b.配置M2_HOME的环境变量,然后将该变量添加到Path中 备注:必须要有JAVA_HOM ...

  5. Maven打包部署脚本

    #!/bin/sh SVN_USER_NAME= SVN_PASSWORD= ROOT_PATH PROJECT_NAME ACTION SVN_LIB_ROOT USER_ACCOUNT PASSW ...

  6. 使用IntelliJ IDEA和Maven构建Java web项目并打包部署

    爱编程爱分享,原创文章,转载请注明出处,谢谢! http://www.cnblogs.com/fozero/p/6120375.html 一.背景 现在越来越多的人使用IntelliJ IDEA工具进 ...

  7. 从零入门 Serverless | 教你使用 IDE/Maven 快速部署 Serverless 应用

    作者 | 许成铭(竞霄) 阿里云开发工程师 SAE 应用部署方式 1. SAE 概述 首先,简单介绍一下 SAE.SAE 是一款面向应用的 Serverless PaaS 平台,支持 Spring C ...

  8. 用Maven打包成EAR远程部署JBoss(二)——部署到远程JBoss

    用Maven打包成EAR远程部署JBoss(一)讲了如何使用Maven打包,可是在文章的最后也留下了一个问题,那就是如何将包部署到远程的JBoss中呢?近期在对之前的学习进行总结,发现少了这样一篇重要 ...

  9. SpringCloud微服务实战——搭建企业级开发框架(三十四):SpringCloud + Docker + k8s实现微服务集群打包部署-Maven打包配置

      SpringCloud微服务包含多个SpringBoot可运行的应用程序,在单应用程序下,版本发布时的打包部署还相对简单,当有多个应用程序的微服务发布部署时,原先的单应用程序部署方式就会显得复杂且 ...

随机推荐

  1. maven package 命令报:-source1.3 中不支持注释错误

    在使用maven 打包或者编译时报:-source1.3 中不支持注释错误解决方案如下: <build>  <plugins>   <plugin>    < ...

  2. php array_flip() 删除数组重复元素——大彻大悟

    1. php array_flip() 删除数组重复元素,如果用于一维索引数组,好理解. [root@BG-DB:~]$more arr.php  <?php         $arr = ar ...

  3. Mac parallels desktop安装windows,linux

    前言 这款软件你就看作是虚拟机vm,如果你要安装win10系统,请下载ios镜像文件 下载准备工作 Parallels Desktop 13 破解版本 联系站长所要 win10 iso镜像文件    ...

  4. CSS3 的calc()方法的使用

    calc()简单介绍 calc()对大家来说,或许很陌生,不太会相信calc()是css中的部分.因为看其外表像个函数,既然是函数为何又出现在CSS中呢?这一点也让我百思不得其解,今天有一同事告诉我, ...

  5. 小朋友学C语言(7)

    数组 一.数组简介 C 语言支持数组数据结构,它可以存储一个固定大小的相同类型元素的顺序集合.数组是用来存储一系列数据,但它往往被认为是一系列相同类型的变量. 数组的声明并不是声明一个个单独的变量,比 ...

  6. jQuery更新

    jQuery jQuery介绍 jQuery是一个轻量级的.兼容多浏览器的JavaScript库. jQuery使用户能够更方便地处理HTML Document.Events.实现动画效果.方便地进行 ...

  7. OpenACC 梯度下降法求解线性方程的优化

    ▶ 书上第二章,用一系列步骤优化梯度下降法解线性方程组.才发现 PGI community 编译器不支持 Windows 下的 C++ 编译(有 pgCC 命令但是不支持 .cpp 文件,要专业版才支 ...

  8. spring boot 整合MongoDB

    参考     https://www.cnblogs.com/nbfujx/p/7999171.html

  9. leetcode66

    public class Solution { public int[] PlusOne(int[] digits) { ]; < ) { digits[digits.Length - ]++; ...

  10. Android 照相

    XE6 控件太强了CameraComponent就可以了 CameraComponent1.Active := True; procedure TCameraComponentForm.CameraC ...