maven、sbt、gradle的几种依赖打包方式

前言

目前常用的项目管理工具大概包括maven、sbt、gradle几种,这几种工具在使用时往往会遇到一种常见的场景,就是需要把工程依赖的jar包导出或打成一个包,下面来总结这几种工具如何实现依赖打包。

maven

  1. 打成一个包,即依赖多少jar都统统解压为.class等内容,与项目自身的class打成一个包
    在pom中写入如下内容,注意如果已经有build以及plugins配置的话别覆盖错了
<build>
  	<finalName>输出最终名次</finalName>
	<defaultGoal>compile</defaultGoal>
  	<plugins>
  		<plugin>  
            <groupId>org.apache.maven.plugins</groupId>  
            <artifactId>maven-compiler-plugin</artifactId>  
            <version>2.0.2</version>  
            <configuration>  
                <source>1.8</source>  
                <target>1.8</target>  
            </configuration>  
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
            <version>2.4.1</version>
            <configuration>
                <createDependencyReducedPom>false</createDependencyReducedPom>
            </configuration>
            <executions>
                <execution>
                   <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                        <configuration>
                            <filters>
                                <filter>
                                    <artifact>*:*</artifact>
                                    <excludes>
                                        <exclude>META-INF/*.SF</exclude>
                                        <exclude>META-INF/*.DSA</exclude>
                                        <exclude>META-INF/*.RSA</exclude>
                                    </excludes>
                                </filter>
                            </filters>
                            <transformers>
                                <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer" />
                            </transformers>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
    </plugins>
  </build>
  1. 将全部jar输出到一个lib目录中,有点像tomcat WEB_INF/lib的方式
    在plugins里增加如下内容就行
<plugin>  
              <artifactId>maven-dependency-plugin</artifactId>  
              <version>2.1</version>  
              <executions>  
                  <execution>  
                      <id>copy-dependencies</id>  
                      <phase>prepare-package</phase>
                      <goals>  
                          <goal>copy-dependencies</goal>  
                      </goals>  
                  </execution>  
              </executions>
              <configuration>
              	 	<excludeTransitive>false</excludeTransitive> 
					<stripVersion>false</stripVersion> 
                 	<includeTypes>jar</includeTypes>  
                 	<overWriteSnapshots>true</overWriteSnapshots>  
                 	<type>jar</type>
                 	<excludeScope>system</excludeScope>
                 	<!-->这是输出的路径<--->
                 	<outputDirectory>${project.build.directory}/lib</outputDirectory>
             </configuration>  
        </plugin>

maven的配置方式还是比较简单的,但是部分版本可能不一样,不过一般都能成功。

gradle

  1. 打成一个包
    build.gradle里写入
jar{
    from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
}
  1. 将依赖输出到lib
jar {
   task dist(dependsOn: 'assemble', type: Copy) {
       from configurations.runtime
       from jar
       include "**/*.jar"
       into "${buildDir}/lib"
       }
}

gradle还行,不过配置方法比较多一些,不一定是这几个

sbt

相比前两个sbt的方法最不稳定
先看如何把依赖输出到目录
project下添加plugins.sbt文件,如果有的话可以直接追加,写入如下内容

addSbtPlugin("org.xerial.sbt" % "sbt-pack" % "0.12")

build.sbt中写入

enablePlugins(PackPlugin)

打包使用命令

sbt pack

就能输出依赖jar了

猜你喜欢

转载自blog.csdn.net/xyhshen/article/details/86656370
今日推荐