• Dubbo的Maven打包


    Maven项目的依赖,我们可以通过下面命令看到,打包时,会按照这个依赖编译进去对应模块。 参考:http://www.cnblogs.com/ghj1976/p/5336923.html

    mvn dependency:tree
     
     

    maven-assembly-plugin

    实际的软件项目常常会有更复杂的打包需求,例如我们可能需要为客户提供一份产品的分发包,这个包不仅仅包含项目的字节码文件,
    还得包含依赖以及相关脚本文件以方便客户解压后就能运行,此外分发包还得包含一些必要的文档。
    我们就要搬出Maven最强大的打包插件:maven-assembly-plugin。它支持各种打包文件格式,包括zip、tar.gz、tar.bz2等等,
    通过一个打包描述文件(该例中是src/main/assembly.xml),它能够帮助用户选择具体打包哪些文件集合、依赖、模块、和甚至本地仓库文件,
    每个项的具体打包路径用户也能自由控制。

    以Dubbo的 dubbo-demo-provider 为例,我们在它的 pom 文件中可以看到如下插件配置:

               <plugin>
                    <artifactId>maven-assembly-plugin</artifactId>
                    <configuration>
                        <descriptor>src/main/assembly/assembly.xml</descriptor>
                    </configuration>
                    <executions>
                        <execution>
                            <id>make-assembly</id>
                            <phase>package</phase>
                            <goals>
                                <goal>single</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>

    这里的第四行我们指定了一个assembly.xml文件,这就是对应需求的打包描述文件。

    我们进去看这个文件,内容如下:

    <assembly>
        <id>assembly</id>
        <formats>
            <format>tar.gz</format>
        </formats>
        <includeBaseDirectory>true</includeBaseDirectory>
        <fileSets>
            <fileSet>
                <directory>${project.build.directory}/dubbo/META-INF/assembly/bin</directory>
                <outputDirectory>bin</outputDirectory>
                <fileMode>0755</fileMode>
            </fileSet>
            <fileSet>
                <directory>src/main/assembly/conf</directory>
                <outputDirectory>conf</outputDirectory>
                <fileMode>0644</fileMode>
            </fileSet>
        </fileSets>
        <dependencySets>
            <dependencySet>
                <outputDirectory>lib</outputDirectory>
            </dependencySet>
        </dependencySets>
    </assembly>

    首先这个assembly.xml文件的id对应了其最终生成文件的classifier, 这个项目最终生成的文件名为:

    其次formats定义打包生成的文件格式,这里是tar.gz。因此结合id我们会得到一个名为dubbo-demo-provider-2.5.4-SNAPSHOT-assembly.tar的文件。(假设artifactId为assembly,version为2.5.4)

    dependencySets用来定义选择依赖并定义最终打包到什么目录,这里我们声明的一个depenencySet默认包含所有所有依赖,
    而useProjectArtifact表示将项目本身生成的构件也包含在内,最终打包至输出包内的lib路径下(由outputDirectory指定)。

    fileSets允许用户通过文件或目录的粒度来控制打包。这里的第一个fileSet打包${project.build.directory}/dubbo/META-INF/assembly/bin目录下文件至输出包的bin目录下,第二个fileSet则将src/main/assembly/conf目录下的文件打包至输出包的conf目录下。

    参考资料:

    maven打包dubbo接口之最佳实践
    http://www.bridgeli.cn/archives/236

    Maven实战(九)——打包的技巧
    http://www.infoq.com/cn/news/2011/06/xxb-maven-9-package
  • 相关阅读:
    线段树的一种简化实现[原] by 踏雪赤兔
    C 语言qsort 函数详解
    【转载】Amit’s A star Page 中译文
    Poj3468 线段树 成段更新
    在VMware的CentOS中运行Cadence IC 615的怪现象
    安装非认证的chrome插件和设置文件夹的权限
    [模拟IC]基础知识1
    如何删除 Windows.old 文件夹?
    美国签证面签经历
    三个不同属性的GTD工具
  • 原文地址:https://www.cnblogs.com/ghj1976/p/5337094.html
Copyright © 2020-2023  润新知