zoukankan      html  css  js  c++  java
  • maven(一)maven自带的插件

    关于org.apache.maven.plugins

    前言

    maven提供了很多插件给我们使用,解释3个java环境常用的maven插件, maven-jar-plugin, maven-complier-plugin, maven-assembly-plugin.

    maven-jar-plugin

    Maven提供的打jar包的插件,有点类似idea自带的jar打包工具。

    Maven-jar-plugin可以自定义主类,从而打成一个可执行的jar

    例子

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <version>2.6</version>
        <configuration>
            <archive>
                <manifest>
                    <!--不声明主类会无法运行-->
                    <mainClass>com.xxx.Main</mainClass>
    
    <!--添加依赖classpath配置到MANIFEST文件-->
                    <addClasspath>true</addClasspath>
                </manifest>
                <!--可以添加key/value到生成的manifest-->
                <manifestEntries>
                    <!--Class-Path是classpath关键字,这跟运行环境的依赖路径有关-->
                    <key1>value1</ key1>
                </manifestEntries>
            </archive>
            <!--这些不打进包-->
            <excludes>
                <exclude>config/*.*</exclude>
            </excludes>
        </configuration>
    </plugin>

    archive细节参考

    http://maven.apache.org/shared/maven-archiver/index.html

    其他可以自定义很多内容,比如选择打包的内容,不打包的内容,自定义MANIFEST文件(可以通过JarFile.getManifest来获取key/value),

    MANIFEST文件内包含了jar的信息,包括版本,主类,classpath等

    关于manifest文件说明

    http://maven.apache.org/shared/maven-archiver/examples/manifest.html

    maven-compiler-plugin

    Maven提供的编译java源码的插件,比如指定编译的jdk版本,编译编码(UTF-8)之类

    例子

    <plugin>
        <!--用于声明编译的相关配置,若不声明,则maven采用默认的相关配置 本来处理,可能会出现问题-->
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.1</version>
        <configuration>
            <!--声明源代码的jdk版本-->
            <source>1.8</source>
            <!--声明生成目标的jdk版本-->
            <target>1.8</target>
            <!--声明编译文件的编码-->
            <encoding>UTF-8</encoding>
        </configuration>
    </plugin>

    //compiler插件详细资料

    http://maven.apache.org/plugins/maven-compiler-plugin/

    maven-assembly-plugin

    Maven提供的自定义打包的插件,制作项目分发包,该分发包可能包含了项目的可执行文件、源代码、readme、平台脚本等等。maven-assembly-plugin支持各种主流的格式如zip、tar.gz、jar和war等,具体打包哪些文件是高度可控的,例如用户可以按文件级别的粒度、文件集级别的粒度、模块级别的粒度、以及依赖级别的粒度控制打包,此外,包含和排除配置也是支持的。maven-assembly-plugin要求用户使用一个名为assembly.xml的元数据文件来表述打包

    1.pom.xml声明部分简单例子

    <plugin>
        <!--可以不声明groupId 因为groupId是默认的-->
        <artifactId>maven-assembly-plugin</artifactId>
        <executions>
            <execution>
                <!-- 官方说法 this is used for inheritance merges 感觉没什么用...-->
                <id>make-assembly</id>
                <!-- 绑定到maven的package操作 生命周期阶段上,也可以用绑定到install操作 -->
                <phase>package</phase>
                <goals>
                    <!-- 和phase的package组合使用 -->
                    <goal>single</goal>
                </goals>
                <configuration>
                    <!--不在生成的压缩包名称中添加assemblyId(在描述文件定义的id)-->
                    <appendAssemblyId>false</appendAssemblyId>
                    <descriptors>
                        <!--自定义描述文件路径-->
                        <descriptor>src/main/assembly/assembly.xml</descriptor>
                    </descriptors>
                </configuration>
            </execution>
        </executions>
    </plugin>

    2.assembly.xml描述部分

    <?xml version="1.0" encoding="UTF-8"?>
    <assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3 http://maven.apache.org/xsd/assembly-1.1.3.xsd">
        <!--生成的包的名称会添加此id,例如xxxx-package.zip-->
        <id>package</id>
        <formats>
            <!--支持常见的包格式,例如zip,tar,tar.gz,jar,war等-->
            <format>zip</format>
        </formats>
        <!--相当于压缩包的目录,默认是有的,(解压后是平铺还是有个目录.)-->
        <includeBaseDirectory>true</includeBaseDirectory>
        <fileSets>
            <fileSet>
                <directory>${project.basedir}srcmain</directory>
                <includes>
                    <include>sbin/*.sh</include>
                </includes>
                <!--换行符格式,windows是
    ,unix是
    等-->
                <lineEnding>unix</lineEnding>
                <!--类似与unix的acl,read是4,write是2,execute是1;默认是0644-->
                <fileMode>0755</fileMode>
                <outputDirectory>/</outputDirectory>
            </fileSet>
            <fileSet>
                <directory>${project.basedir}srcmain
    esources</directory>
                <includes>
                    <include>*.properties</include>
                </includes>
                <outputDirectory>/conf</outputDirectory>
            </fileSet>
            <fileSet>
                <directory>${project.build.directory}</directory>
                <includes>
                    <include>*.jar</include>
                </includes>
                <outputDirectory>lib</outputDirectory>
            </fileSet>
        </fileSets>
    </assembly>

    //maven官网对assembly的解释

    http://maven.apache.org/plugins/maven-assembly-plugin/assembly.html

    //maven官方的插件库总览

    http://maven.apache.org/plugins/index.html

  • 相关阅读:
    Android笔记:数据储存
    Android笔记:管理所有活动
    Android随笔:属性
    Android笔记:限定符
    Android笔记:ninepatch
    Android笔记:获取屏幕信息
    js自动完成
    动态生成实体类
    EF框架学习手记
    js遮罩效果
  • 原文地址:https://www.cnblogs.com/ulysses-you/p/7654489.html
Copyright © 2011-2022 走看看