• Maven 引入中央仓库中不存在/自定义/第三方的 jar 包、以及打包为生成可运行 jar 包


    如果有些jar包在maven仓库中是不存在,我们有两种方式将其引入到我们的maven工程。我这里已smarthome-nbcodec-1.1.6-SNAPSHOT.jar 包为例。

    第一种方式比较简单,只需将其jar包导入到本地 mavan 仓库中。

    mvn install:install-file -Dfile=PATH/smarthome-nbcodec-1.1.6-SNAPSHOT.jar -DgroupId=com.my.smarthome -DartifactId=nbcodec -Dversion=1.1.6-SNAPSHOT -Dpackaging=jar -DgeneratePom=true 
    

    其中,Dfile为jar包的位置,-DgroupId、-DartifactId、-Dversion可根据情况自定义,-Dpackaging为jar。然后就可以正常通过pom引入了。

    1. <dependency>
    2. <groupId>com.my.smarthomegroupId>
    3. <artifactId>nbcodecartifactId>
    4. <version>1.1.6-SNAPSHOTversion>
    5. dependency>

    第二章方式可以将其放到项目中,然后引入进来

    首先在项目中建立一个libs目录来存放第三方jar包。

    pom 引入

    1. <dependency>
    2. <groupId>smarthomegroupId>
    3. <artifactId>nbcodecartifactId>
    4. <version>1.1.6-SNAPSHOTversion>
    5. <scope>systemscope>
    6. <systemPath>${pom.basedir}/libs/smarthome-nbcodec-1.1.6-SNAPSHOT.jarsystemPath>
    7. dependency>

    其中,groupId、artifactId、version可根据情况自定义,scope只能是system范围,systemPath 为 jar 包的位置,pom.basedir为。

    这样可以直接在代码中直接使用了,但是打包后还是运行不了,因此还得配置下打包相关的配置。

    maven-assembly-plugin插件打包

    1. <build>
    2. <resources>
    3. <!-- 复制本地扩展jar包到libs目录 -->
    4. <resource>
    5. <directory>./libs</directory> <!-- 当前libs目录下的jar包 -->
    6. <targetPath>${project.build.directory}/dist/${artifactId}-${version}/lib</targetPath> <!-- 复制到本模块打包目录的lib目录 -->
    7. <includes>
    8. <include>**/*.jar</include>
    9. </includes>
    10. </resource>
    11. <!--定义了上面的resource, 要想默认的src/main/resources目录生效, 必须显式额外增加下面的配置-->
    12. <resource>
    13. <directory>src/main/resources</directory>
    14. <!-- 表示是否对配置文件中的${}占位符进行解析替换-->
    15. <filtering>false</filtering>
    16. </resource>
    17. </resources>
    18. <plugins>
    19. <!-- maven-assembly-plugin插件配置,配置输出目录为dist -->
    20. <plugin>
    21. <artifactId>maven-assembly-plugin</artifactId>
    22. <configuration>
    23. <appendAssemblyId>false</appendAssemblyId>
    24. <descriptors>
    25. <descriptor>package.xml</descriptor>
    26. </descriptors>
    27. <outputDirectory>${project.build.directory}/dist/</outputDirectory>
    28. </configuration>
    29. <executions>
    30. <execution>
    31. <id>make-assembly</id>
    32. <phase>package</phase>
    33. <goals>
    34. <goal>single</goal>
    35. </goals>
    36. </execution>
    37. </executions>
    38. </plugin>
    39. <plugin>
    40. <groupId>org.apache.maven.plugins</groupId>
    41. <artifactId>maven-jar-plugin</artifactId>
    42. <version>2.4</version>
    43. <configuration>
    44. <archive>
    45. <manifest>
    46. <mainClass>com.xiangtao.LotApp</mainClass>
    47. <classpathPrefix>lib/</classpathPrefix>
    48. <addClasspath>true</addClasspath>
    49. </manifest>
    50. <manifestEntries>
    51. <!-- 在Class-Path下添加配置文件的路径 -->
    52. <Class-Path>resources/ lib/smarthome-nbcodec-1.1.6-SNAPSHOT.jar</Class-Path>
    53. </manifestEntries>
    54. </archive>
    55. </configuration>
    56. </plugin>
    57. </plugins>
    58. </build>

    重点注意下位置别写错

    如果最后还是不成功,可以将其打包后的jar包进行解压,然后检查看生成的 MANIFEST.MF 文件,看所有的包是否真确。

  • 相关阅读:
    华为云云耀云服务器L实例评测|教你搭建第一个Java程序
    ASP.NET Core 6框架揭秘实例演示[13]:日志的基本编程模式
    剧情继续:马斯克曝出OpenAI前员工举报信,董事会与奥特曼谈判回归
    得帆信息携手深信服,联合打造高安全PaaS超融合一体化解决方案
    通关算法题之 ⌈二叉树⌋ 下
    【安装库】使用win10自带健康工具生成电池报告及相关问题解决
    Flink Java 之 Savepoints
    [Servlet 4]Bean与DAO设计模式
    DIV布局个人介绍网页模板代码 家乡海阳个人简介网页制作 简单个人静态HTML网页设计作品 DW个人网站制作成品 web网页制作与实现...
    MSP430F5529晶振配置
  • 原文地址:https://blog.csdn.net/u012970287/article/details/127613264