• 将多个jar包重新打包成一个jar包


    我介绍的方法是使用java命令来操作的,所以首先的安装jdk,这个就自己搞定吧.

    提取jar包
    为了将多个jar包打包成一个jar包,首先要将每个jar包的内容提取出来放到一个文件夹下,具体的操作命令就是使用jar xf jar的文件名
    比如我的jar放到桌面的一个新建文件夹(2)下,那么就通过cmd进入到这个目录然后输入上面的命令即可


    重新打包jar包
    也是通过cmd进入到要打包的文件夹目录下,通过jar cf 新的jar包名 要被打包的文件夹名

    如上图的命令就是将 com文件夹打包成一个my.jar

    将多个文件夹打包成jar包
    通过cmd进入到要打包的文件夹目录下,通过jar cf 新的jar包名 要被打包的文件夹名 要被打包的文件夹名, 就是将多个文件夹名都写在后面即可

    如上图就是将com和cn 两个文件夹一起打包成my.jar

    切记重新打包成jar包时 原来jar的路径名不能修改,且不能重复否则在编译的时候会报异常,具体的可以参考我的上一篇文章Android studio编译报错:Error:Execution failed for task ‘:app:transformClassesWithDexForDebug’

    ---------------------
    作者:totcw
    来源:CSDN
    原文:https://blog.csdn.net/totcw/article/details/72723627
    版权声明:本文为博主原创文章,转载请附上博文链接!

    https://www.cnblogs.com/sxdcgaq8080/p/8399854.html

    之前有一片文章,是打包单个java文件的。这次想要将http://www.cnblogs.com/sxdcgaq8080/p/8398780.html  打包成jar包,发现这个java文件中引用了多个第三方的jar,想要单独进行编译都无法通过,更不要说打包成jar了。

    所以就营运而生了这个需求,怎么打包单个java文件或多个java文件,将文件中引用的依赖的jar包共同打包成一个jar供别的项目引用。

    本次本篇使用的工具是Maven中的

    maven-assembly-plugin

    插件。

    ======================================================================================================

    1.首先,需要新建一个maven项目,将单个或多个java文件拷贝到本项目中

    例如,下面这个QR_Code.java文件

     View Code

    2.完善pom.xml文件,除了项目中依赖的jar的引用,还需要maven-assembly-plugin插件

    复制代码
    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>com.sxd.util</groupId>
        <artifactId>QR_Code</artifactId>
        <version>1.1-SNAPSHOT</version>
    
        <dependencies>
            <!--lombok-->
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>1.16.20</version>
            </dependency>
            <!-- google提供二维码生成和解析https://mvnrepository.com/artifact/com.google.zxing/core -->
            <dependency>
                <groupId>com.google.zxing</groupId>
                <artifactId>core</artifactId>
                <version>3.3.2</version>
            </dependency>
        </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.7.0</version>
                    <configuration>
                        <source>1.8</source>
                        <target>1.8</target>
                    </configuration>
                </plugin>
    
                <plugin>
                    <artifactId> maven-assembly-plugin </artifactId>
                    <configuration>
                        <descriptorRefs>
                            <descriptorRef>jar-with-dependencies</descriptorRef>
                        </descriptorRefs>
                        <archive>
                            <manifest>
                                <mainClass>com.sxd.util.QR_Code</mainClass>
                            </manifest>
                        </archive>
                    </configuration>
                    <executions>
                        <execution>
                            <id>make-assembly</id>
                            <phase>package</phase>
                            <goals>
                                <goal>single</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>
    
    </project>
    复制代码

    =============================================================================================================================================

    【解释一下,直接使用的可以跳过】:

    》》(1)打包出来的jar包,是以

        <groupId>com.sxd.util</groupId>
        <artifactId>QR_Code</artifactId>
        <version>1.1-SNAPSHOT</version>

    {artifactId}-{version}.jar命名的

    》》(2)maven-assembly-plugin插件中

    默认情况下,maven-assembly-plugin内置了几个可以用的assembly descriptor:

    • bin : 类似于默认打包,会将bin目录下的文件打到包中
    • jar-with-dependencies : 会将所有依赖都解压打包到生成物中【本次需求正好是将所有依赖也打包】
    • src :只将源码目录下的文件打包
    • project : 将整个project资源打包

    》》(3)针对于maven-assembly-plugin插件中的

     ===================================================================================================================================================

    3.使用IDEA的同志们,双击插件 即可执行打包指令

    执行完整的语句如下:

    复制代码
    "C:Program FilesJavajdk1.8.0_131injava" -Dmaven.multiModuleProjectDirectory=G:ideaProjectsBsxdproject -Dmaven.home=C:UsersSXDAppDataLocalJetBrainsToolboxappsIDEA-Uch-0173.3727.127pluginsmavenlibmaven3 -Dclassworlds.conf=C:UsersSXDAppDataLocalJetBrainsToolboxappsIDEA-Uch-0173.3727.127pluginsmavenlibmaven3inm2.conf -javaagent:C:UsersSXDAppDataLocalJetBrainsToolboxappsIDEA-Uch-0173.3727.127libidea_rt.jar=58262:C:UsersSXDAppDataLocalJetBrainsToolboxappsIDEA-Uch-0173.3727.127in -Dfile.encoding=UTF-8 -classpath C:UsersSXDAppDataLocalJetBrainsToolboxappsIDEA-Uch-0173.3727.127pluginsmavenlibmaven3ootplexus-classworlds-2.5.2.jar org.codehaus.classworlds.Launcher -Didea.version=2017.3 org.apache.maven.plugins:maven-assembly-plugin:2.2-beta-5:assembly
    [INFO] Scanning for projects...
    [INFO]                                                                         
    [INFO] ------------------------------------------------------------------------
    [INFO] Building QR_Code 1.1-SNAPSHOT
    [INFO] ------------------------------------------------------------------------
    [INFO] 
    [INFO] >>> maven-assembly-plugin:2.2-beta-5:assembly (default-cli) > package @ QR_Code >>>
    [INFO] 
    [INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ QR_Code ---
    [WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!
    [INFO] Copying 0 resource
    [INFO] 
    [INFO] --- maven-compiler-plugin:3.7.0:compile (default-compile) @ QR_Code ---
    [INFO] Changes detected - recompiling the module!
    [WARNING] File encoding has not been set, using platform encoding UTF-8, i.e. build is platform dependent!
    [INFO] Compiling 1 source file to G:ideaProjectsBsxdproject	argetclasses
    [INFO] 
    [INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ QR_Code ---
    [WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!
    [INFO] skip non existing resourceDirectory G:ideaProjectsBsxdprojectsrc	est
    esources
    [INFO] 
    [INFO] --- maven-compiler-plugin:3.7.0:testCompile (default-testCompile) @ QR_Code ---
    [INFO] Nothing to compile - all classes are up to date
    [INFO] 
    [INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ QR_Code ---
    [INFO] No tests to run.
    [INFO] 
    [INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ QR_Code ---
    [INFO] Building jar: G:ideaProjectsBsxdproject	argetQR_Code-1.1-SNAPSHOT.jar
    [INFO] 
    [INFO] --- maven-assembly-plugin:2.2-beta-5:single (make-assembly) @ QR_Code ---
    [INFO] META-INF/MANIFEST.MF already added, skipping
    [INFO] Building jar: G:ideaProjectsBsxdproject	argetQR_Code-1.1-SNAPSHOT-jar-with-dependencies.jar
    [INFO] META-INF/MANIFEST.MF already added, skipping
    [INFO] 
    [INFO] <<< maven-assembly-plugin:2.2-beta-5:assembly (default-cli) < package @ QR_Code <<<
    [INFO] 
    [INFO] --- maven-assembly-plugin:2.2-beta-5:assembly (default-cli) @ QR_Code ---
    [INFO] META-INF/MANIFEST.MF already added, skipping
    [INFO] Building jar: G:ideaProjectsBsxdproject	argetQR_Code-1.1-SNAPSHOT-jar-with-dependencies.jar
    [INFO] META-INF/MANIFEST.MF already added, skipping
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time: 3.319 s
    [INFO] Finished at: 2018-02-01T16:30:47+08:00
    [INFO] Final Memory: 23M/258M
    [INFO] ------------------------------------------------------------------------
    
    Process finished with exit code 0
    复制代码

    4.执行完成之后,项目结构会发生变化

    5.把jar包拷出来,放在一个位置,就可以上传到nexus上,放在maven私服里,给大家引用了【nexus私服搭建以及相关操作,查看http://www.cnblogs.com/sxdcgaq8080/p/7583767.html

    当然,想更改jar的名字,也可以直接修改完成之后再进行如下操作

    打开DOM窗口,执行如下命令

    mvn deploy:deploy-file -DgroupId=sxd.jar -DartifactId=QR_Code -Dversion=1.1 -Dpackaging=jar -Dfile=G:	estQR_Code-1.1-SNAPSHOT.jar -Durl=http://localhost:8081/repository/myself_hosted/ -DrepositoryId=myself_hosted

    在http://localhost:8081/ 访问nexus

    查询就可查看到

    这样在项目中引用如下:

    <!--QR_Code二维码使用工具包-->
            <dependency>
                <groupId>sxd.jar</groupId>
                <artifactId>QR_Code</artifactId>
                <version>1.1</version>
            </dependency>

     6.最后,就可以把这个单独创建的项目 删除就好了

    END

    =========================================

    参考地址:https://www.cnblogs.com/f-zhao/p/6929814.html

  • 相关阅读:
    从面向对象到SOA
    我对国内软件开发类书籍出版与写作的体会与努力
    MSDN for 2010的那些麻烦事
    金旭亮新作《.NET 4.0面向对象编程漫谈》之序“穿越梦想、起锚远航”
    Silverlight应用程序的本地通讯
    C#中Dictionary的用法
    泛型
    动态规划算法
    C# Timer
    面向对象程序设计寒假作业1
  • 原文地址:https://www.cnblogs.com/yuluoxingkong/p/11262210.html
Copyright © 2020-2023  润新知