zoukankan      html  css  js  c++  java
  • maven 学习10 关于打包

    clean package -Dmaven.test.skip=true -P product

    这个命令干的活: 清class文件,打包构建,跳过测试,注意最后一个 -P product, 会激活项目下的pom.xml配置的<profiles>标签下id为product。

    Maven提供了Profile的概念来决绝不同环境打包的问题:

    <profiles>  
        <profile>  
            <id>kaifa</id>  
            <properties>  
                <db.url>192.10.2.168</db.url>  
                <db.username>dbtest</db.username>  
                <db.password>dbtest</db.password>  
            </properties>  
        </profile>  
          
        <profile>  
            <id>shengchan</id>  
            <properties>  
                <db.url>192.20.1.11</db.url>  
                <db.username>admin</db.username>  
                <db.password>comfreesecurity</db.password>  
            </properties>  
        </profile>  
    </profiles>  

     常用插件:

    •   maven-jar-plugin

                 打成jar时,设定manifest的参数,比如指定运行的Main class,还有依赖的jar包,加入classpath中。

                  (classpath:classpath是Java运行时环境搜索类和其他资源文件(比如jarzip等资源)的路径。可以通过JDK工具(比如javac命令、java命令)后面的-       

                                     classpath 参数设置classpath)

     <plugin>
                            <artifactId>maven-jar-plugin</artifactId>
                            <configuration>
                                <archive>
                                    <manifest>
                                        <mainClass>play.core.server.ProdServerStart</mainClass>  // 主函数
                                        <addClasspath>true</addClasspath>            // 加入到classpath
                                        <classpathPrefix>lib/</classpathPrefix>      
                                    </manifest>
                                    <!-- Add config folder into classpath of MANIFEST -->
                                    <manifestEntries>
                                        <Class-Path>conf/</Class-Path>          // 资源文件也加入到classpath
                                    </manifestEntries>
                                </archive>
                                <classesDirectory></classesDirectory>
                                <!--<excludes> <exclude>*.conf</exclude> <exclude>*.xml</exclude>
                                    </excludes> -->
                            </configuration>
                        </plugin>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <version>2.4</version>
        <configuration>
            <archive>
                <manifest>
                    <addClasspath>true</addClasspath>
                    <classpathPrefix>/data/lib</classpathPrefix>
                    <mainClass>com.zhang.spring.App</mainClass>
                </manifest>
            </archive>
        </configuration>
    </plugin>
    • maven-dependency-plugin

                用于复制依赖的jar包到指定的文件夹里,

      <plugin>
                            <artifactId>maven-dependency-plugin</artifactId>
                            <executions>
                                <execution>
                                    <id>copy</id>
                                    <phase>package</phase>
                                    <goals>
                                        <goal>copy-dependencies</goal>
                                    </goals>
                                    <configuration>
                                        <outputDirectory>${project.build.directory}/lib</outputDirectory>
                                    </configuration>
                                </execution>
                            </executions>
                        </plugin>
    • maven-assembly-plugin

                自定义打包方式。

     <plugin>
                            <artifactId>maven-assembly-plugin</artifactId>
                            <configuration>
                                <descriptors>
                                    <descriptor>assembly.xml</descriptor>        // 具体的打包方式定义到assembly.xml文件中
                                </descriptors>
                            </configuration>
                            <executions>
                                <execution>
                                    <id>make-assembly</id>
                                    <phase>package</phase>
                                    <goals>
                                        <goal>single</goal>
                                    </goals>
                                </execution>
                            </executions>
                        </plugin>
    <assembly>
        <id>dist</id>
        <formats>
            <format>zip</format>          // 指定打包的格式
        </formats>
        <!-- set to false the archive created will unzip its content to the current directory. -->
        <includeBaseDirectory>false</includeBaseDirectory>
    
        <fileSets>
            <!-- copy file from target folder -->
            <fileSet>
                <directory>${basedir}/target</directory>      // 把 这个路径下的所有*.jar文件打包到指定目录
                <includes>
                    <include>*.jar</include>
                </includes>
                <outputDirectory></outputDirectory>
            </fileSet>
            <fileSet>
                <directory>${basedir}/target/lib</directory>
                <outputDirectory>lib</outputDirectory>
            </fileSet>
            <fileSet>
                <directory>${basedir}/target/conf</directory>
                <outputDirectory>conf</outputDirectory>
                <fileMode>600</fileMode>
                <lineEnding>unix</lineEnding>
            </fileSet>
    
            <!-- copy file from source folder -->
            <fileSet>
                <directory>${basedir}/dist</directory>
                <outputDirectory></outputDirectory>
                <fileMode>744</fileMode>
                <lineEnding>unix</lineEnding>
                <includes>
                    <include>start</include>
                    <include>stop</include>
                </includes>
            </fileSet>
            <fileSet>
                <directory>${basedir}/src/main/resources</directory>
                <excludes>
                    <exclude>logback-test.xml</exclude>
                </excludes>
                <outputDirectory>conf</outputDirectory>
                <fileMode>600</fileMode>
                <lineEnding>unix</lineEnding>
            </fileSet>
        </fileSets>
    
       <!-- <files>
            <file>
                <source>${basedir}/dist/README</source>
            </file>
        </files>-->
    </assembly>
  • 相关阅读:
    Java蛇形数组的简单实现代码
    Android Studio生成javadoc出错的解决办法
    AngularJS指令嵌套时link函数执行顺序的问题
    [转]如果我有jQuery背景,我应该如何切换到AngularJS的思维模式?
    扩展ViewFlow避免和ViewPager滑动冲突,同时支持无限循环,并完美和CircleFlowIndicator结合
    人机交互的新方向:智能聊天机器人
    利用python自动清除Android工程中的多余资源
    巧用svn create patch(打补丁)方案解决定制版需求
    【Android开发坑系列】之经常被忽略的背景图片内存泄露
    【Android开发坑系列】之try-catch
  • 原文地址:https://www.cnblogs.com/liufei1983/p/9249006.html
Copyright © 2011-2022 走看看