zoukankan      html  css  js  c++  java
  • 多个module实体类集合打一个jar包并上传至远程库

    本章内容主要分享多个module中的实体类集合生成到一个jar包中,并且发布到远程库;这里采用maven-assembly-plugin插件的功能来操作打包,内容不长却贴近实战切值得拥有,主要节点内容如:

    • 多个module实体类集合打jar包
    • jar包打入本地库
    • jar包上传至远程库

    多个module实体类集合打jar包

    首先假设下我们拥有多个module,每个module中有一些接口或公用方法的参数实体和响应实体,再或者有公用枚举,此时为了合作方对接方便,我们需要吧这些个实体类、枚举、接口等集合到一个jar包中,提供给合作方使用;

    这里我们可以在项目工程下再创建一个空的module,里面不用包含任何代码,但是需要在pom中加入assmebly插件如:

     1         <plugins>
     2             <plugin>
     3                 <artifactId>maven-assembly-plugin</artifactId>
     4                 <version>3.1.0</version>
     5                 <executions>
     6                     <execution>
     7                         <id>${project.artifactId}</id>
     8                         <phase>package</phase>
     9                         <goals>
    10                             <goal>single</goal>
    11                         </goals>
    12                         <configuration>
    13                             <appendAssemblyId>false</appendAssemblyId>
    14                             <descriptors>
    15                                 <descriptor>${project.basedir}/src/main/assembly/assembly.xml</descriptor>
    16                             </descriptors>
    17                         </configuration>
    18                     </execution>
    19                 </executions>
    20             </plugin>
    21         </plugins>

    assmebly插件对应一个assembly.xml配置文件,该配置文件主要包含要打入的实体类,接口等的class类路径;没错我们主要通过吧class类文件加入到jar中,来完成我们开放的实体类等信息,assembly.xml文件信息如:

     1 <assembly xmlns="http://maven.apache.org/ASSEMBLY/2.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     2           xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.0.0
     3           http://maven.apache.org/xsd/assembly-2.0.0.xsd
     4           http://maven.apache.org/ASSEMBLY/2.0.0 ">
     5     <id>RELEASE</id>
     6     <formats>
     7         <format>jar</format>
     8     </formats>
     9     <includeBaseDirectory>false</includeBaseDirectory>
    10     <fileSets>
    11         <!-- 打包项目本身编译class文件 -->
    12         <fileSet>
    13             <directory>${project.build.directory}/classes</directory>
    14             <outputDirectory></outputDirectory>
    15         </fileSet>
    16         <!-- api包class文件 -->
    17         <fileSet>
    18             <directory>${project.parent.basedir}/api/target/classes</directory>
    19             <includes>
    20                 <include>com/kuku/api/core/provider/**</include>
    21             </includes>
    22             <outputDirectory></outputDirectory>
    23         </fileSet>
    24         <!-- domain包class文件 -->
    25         <fileSet>
    26             <directory>${project.parent.basedir}/domain/target/classes</directory>
    27             <includes>
    28                 <include>com/kuku/domain/master/**</include>
    29                 <include>com/kuku/domain/work/dao/**</include>
    30                 <include>com/kuku/domain/work/model/**</include>
    31                 <include>entity/**</include>
    32             </includes>
    33             <outputDirectory></outputDirectory>
    34         </fileSet>
    35         <!-- common包class文件 -->
    36         <fileSet>
    37             <directory>${project.parent.basedir}/common/target/classes</directory>
    38             <outputDirectory></outputDirectory>
    39         </fileSet>
    40         <!-- 打包resources下的配置文件 -->
    41         <fileSet>
    42             <directory>${project.basedir}/src/main/resources</directory>
    43             <outputDirectory>conf</outputDirectory>
    44             <filtered>true</filtered>
    45             <includes>
    46                 <include>static/**</include>
    47                 <include>templates/**</include>
    48                 <include>**/*</include>
    49             </includes>
    50         </fileSet>
    51     </fileSets>
    52     <!--<dependencySets>-->
    53         <!--<dependencySet>-->
    54             <!--<useProjectArtifact>false</useProjectArtifact>-->
    55             <!--<outputDirectory>lib</outputDirectory>-->
    56             <!--<scope>runtime</scope>-->
    57         <!--</dependencySet>-->
    58     <!--</dependencySets>-->
    59 </assembly>

    来到此处我们配置就完成了,上面主要目的是去target/classes目录下查找生成的.class文件打入jar包中,具体效果就不展示了各自尝试吧。

    jar包打入本地库

    如果没有远程库或权限,可以考虑把jar包install到本地工程库,通常情况下通过mvn install即可完成;本地库路径一般在安装mvn指定,成功install后可以看到这几种文件:

    jar包上传至远程库

    通常公司内部或组内协助完成项目,都会吧接口实体、枚举、公用的方法等打包放入公司内网的库中;假如我们有上传包到内网库的权限,可以首先配置mvn的settings.xml的servers节点:

    1 <servers>
    2     <server>
    3         <id>release</id>
    4         <username>shenniu003</username>
    5         <password>shenniu003</password>
    6     </server>
    7 </servers>

    然后在项目pom中增加如下配置:

    1     <distributionManagement>
    2         <repository>
    3             <id>release</id>
    4             <url>http://102.0.102.10/nexus/content/repositories/releases/</url>
    5             <name>provider</name>
    6         </repository>
    7     </distributionManagement>

    再然后执行mvn deploy命令(idea可以鼠标右键deploy选择run),该命令会打项目的jar并上传到指定的url内网库地址上。

  • 相关阅读:
    还在使用golang 的map 做Json编码么?
    Golang 性能测试(2) 性能分析
    golang 性能测试 (1) 基准性能测试
    消息队列 NSQ 源码学习笔记 (五)
    消息队列 NSQ 源码学习笔记 (四)
    消息队列 NSQ 源码学习笔记 (三)
    消息队列 NSQ 源码学习笔记 (二)
    消息队列 NSQ 源码学习笔记 (一)
    你不知道的空格
    Supervisor 使用和进阶4 (Event 的使用)
  • 原文地址:https://www.cnblogs.com/wangrudong003/p/11235481.html
Copyright © 2011-2022 走看看