转载地址: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. 递归神经网络(Recursive Neural Network, RNN)

    信息往往还存在着诸如树结构.图结构等更复杂的结构.这就需要用到递归神经网络 (Recursive Neural Network, RNN),巧合的是递归神经网络的缩写和循环神经网络一样,也是RNN,递 ...

  2. ESB初步配置文件认识

    每个项目的都有各自的场景,但是其实往小处说,场景的处理基本都是很相似,之前做copy文件的程序,其实就是一种很常见的ETL的过程(转移文件,异构系统通过文件系统交换数据,存在数据同步). 了解一下ET ...

  3. python中的logger模块详细讲解

    logger 提供了应用程序可以直接使用的接口handler将(logger创建的)日志记录发送到合适的目的输出filter提供了细度设备来决定输出哪条日志记录formatter决定日志记录的最终输出 ...

  4. SQL SERVER回滚恢复误操作的数据

    在生产数据库做CURD操作时,可能会有执行某条语句误操作的情况发生,针对这个种情况有两点建议: 1. 在SQL SERVER上开启事务确认功能,当执行完语句后确认无误,再提交事务.(开启方法见附件图片 ...

  5. python气象分析

    数据分析实例 -- 气象数据 一.实验介绍 本实验将对意大利北部沿海地区的气象数据进行分析与可视化.我们在实验过程中先会运用 Python 中matplotlib库的对数据进行图表化处理,然后调用 s ...

  6. linux随机数

    linux系统随机数生成;1,利用uuid(universally unique identifier),由open software foundation在distributed computing ...

  7. 13.小结Action

    转自:https://wenku.baidu.com/view/84fa86ae360cba1aa911da02.html 在struts2中一个普通的java类只要有public String ex ...

  8. 【转】UNITY之LUA加密

    来自:Lua加密 两种方式:一种用luac,一种用luajit luac加密: 1.lua本身可以使用luac将脚本编译为字节码(bytecode)从而实现加密,去官网下载Lua源代码包(http:/ ...

  9. 了解innodb_support_xa(分布式事务)

    innodb_support_xa可以开关InnoDB的xa两段式事务提交.默认情况下,innodb_support_xa=true,支持xa两段式事务提交.此时MySQL首先要求innodb pre ...

  10. oracle vm中的xp添加共享文件夹

      接着就可以在虚拟的电脑系统里面打开我们的共享文件夹,在桌面找到”网络邻居“,双击打开   我们需要通过”添加一个网络邻居“来加载我们刚才添加的”共享文件夹“,根据向导一步步执行   然后点击”浏览 ...