• maven打包部署到私服


    转载地址: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属性要一致
     1 <distributionManagement>  
     2     <repository>  
     3         <id>packaging-releases</id>  
     4         <name>Packaging Release Repository</name>  
     5         <url>http://127.0.0.1:8081/nexus/content/repositories/packaging-release/</url>  
     6     </repository>  
     7     <snapshotRepository>  
     8         <id>packaging-snapshots</id>  
     9         <name>Packaging Snapshot Repository</name>  
    10         <url>http://127.0.0.1:8081/nexus/content/repositories/packaging-snapshot/</url>  
    11     </snapshotRepository>  
    12 </distributionManagement> 
    这样就可以将自己的jar包部署到私有库中了,将maven工程的SNAPSHO后缀删除后自动发布到Release属性的仓库,之前默认的是Snapshot属性的仓库。

    maven-source-plugin插件

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

     

     1     <build>
     2         <finalName>${project.artifactId}</finalName>
     3         <plugins>
     4             <plugin>
     5                 <artifactId>maven-source-plugin</artifactId>
     6                 <version>2.2.1</version>
     7                 <executions>
     8                     <execution>  
     9                         <id>attach-sources</id>  
    10                         <phase>verify</phase>  
    11                         <goals>  
    12                             <goal>jar-no-fork</goal>  
    13                         </goals>  
    14                     </execution>
    15                 </executions>
    16             </plugin>
    17         </plugins>
    18     </build>
    再部署时,就会自动上传源码包了

    cargo-maven2-plugin插件

    当我们需要和并多个war包时,使用cargo-maven2-plugin可以自动帮我们合并web.xml
    1、添加cargo-maven2-plugin插件,其中descriptor指向配置文件

     

     1         <plugins>
     2             <plugin>
     3                 <groupId>org.codehaus.cargo</groupId>
     4                 <artifactId>cargo-maven2-plugin</artifactId>
     5                 <version>1.1.3</version>
     6                 <extensions>true</extensions>
     7                 <configuration>
     8                     <descriptor>src/assemble/merge.xml</descriptor>
     9                 </configuration>
    10             </plugin>
    11         </plugins>
    2、配置文件src/assemble/merge.xml配置如下

     

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <uberwar>
     3     <wars>
     4         <war>com.hust.wnlo.dsis.ipackaging:user.web</war>
     5         <war>com.hust.wnlo.dsis.ipackaging:commodity.web</war>
     6     </wars>
     7     <webXml>
     8         <contextParams>
     9             <strategy name="ChooseByName">
    10                 <default>
    11                     <strategy name="Preserve" />
    12                 </default>
    13                 <choice name="contextConfigLocation">
    14                     <strategy name="NodeMerge">
    15                         <context-param>
    16                             <param-name>$left:param-name</param-name>
    17                             <param-value>$left:param-value $right:param-value</param-value>
    18                         </context-param>
    19                     </strategy>
    20                 </choice>
    21             </strategy>
    22         </contextParams>
    23     </webXml>
    24 </uberwar>

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

    输出日志如下
     1     [INFO] Scanning for projects...  
     2     [INFO]   
     3     [INFO] Using the builder org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder with a thread count of 1  
     4     [INFO]                                                                           
     5     [INFO] ------------------------------------------------------------------------  
     6     [INFO] Building all Maven Webapp 0.0.1-SNAPSHOT  
     7     [INFO] ------------------------------------------------------------------------  
     8     [INFO]   
     9     [INFO] --- cargo-maven2-plugin:1.1.3:uberwar (default-cli) @ all ---  
    10     [INFO] Building war: D:TestWorkworkspacecom.hust.wnlo.dsis.ipackaging.all-0.0.1-SNAPSHOT	argetall.war  
    11     [INFO] ------------------------------------------------------------------------  
    12     [INFO] BUILD SUCCESS  
    13     [INFO] ------------------------------------------------------------------------  
    14     [INFO] Total time: 6.426 s  
    15     [INFO] Finished at: 2015-02-02T14:42:54+08:00  
    16     [INFO] Final Memory: 8M/166M  
    17     [INFO] ------------------------------------------------------------------------  

    参考网址


  • 相关阅读:
    unrecognized selector sent to class
    Xcode 7安装KSImageNamed 不启作用
    使用IntelliJ IDEA配置Erlang开发环境
    BN 详解和使用Tensorflow实现(参数理解)
    argparse 在深度学习中的应用
    转置卷积的详细理解
    递归该怎么写(二)
    递归该怎么写(一)
    二叉树的遍历python 代码
    经典排序的python实现
  • 原文地址:https://www.cnblogs.com/yanduanduan/p/6588197.html
Copyright © 2020-2023  润新知