zoukankan      html  css  js  c++  java
  • maven打包时包含本地jar

    项目中需要使用maven的打包工具,生成zip压缩包,使用的插件是assembly-plugin。因为一些特殊的原因,需要使用一些本地的jar进行依赖,加载外部jar后编码过程中没有任何问题,但是打包时一直报“程序包不存在”。

    思考一下:Maven本质上是一个插件框架,它的核心并不执行任何具体的构建任务,所以虽然在开发过程中项目正常依赖没有任何问题,但是打包的时候肯定就找不到本地的jar了。

    这种问题有很多解决方案,比如加入本地仓库、搭建maven私服等,如需这些解决方案自行谷歌百度,资料很多。

    因为maven编译使用的插件是maven-compiler-plugin,所以只能在maven-compiler-plugin上找问题了,正常情况下的maven-compiler-plugin简单配置如下:

    <plugin>
    				<groupId>org.apache.maven.plugins</groupId>
    				<artifactId>maven-compiler-plugin</artifactId>
    				<version>3.5.1</version>
    				<configuration>
    					<source>${jdk.version}</source>
    					<target>${jdk.version}</target>
    					<showWarnings>true</showWarnings>
    					<compilerArgs>
    						<arg>-extdirs</arg>
    						<arg>${project.basedir}/src/lib</arg>
    					</compilerArgs>
    				</configuration>
    			</plugin>
    

      

    需要注意的是最好添加${project.basedir}以便有更好的兼容性。

    修改上述编译插件后,打包正常,不再报错,但是有一个新的问题产生。生成的zip包并不包含依赖的本地jar。

    修改maven-assembly-plugin插件的配置文件,增加如下配置:

    <fileSet>      
        <directory>srclib</directory>
        <outputDirectory>lib</outputDirectory>
    </fileSet>
    

      

    意思是把srclib下的jar输出到target根目录lib下。

    至此,使用maven的package命令,已能正常运行,并成功把本地jar包打入zip压缩包的lib目录下。

    第二种方法:

    <dependency>
                <groupId>com.aliyun</groupId>
                <artifactId>jave</artifactId>
                <version>1.0.2</version>
                <scope>system</scope>
                <systemPath>${project.basedir}/src/main/resources/jave-1.0.2.jar</systemPath>
            </dependency>
  • 相关阅读:
    Oracle新建用户、角色,授权,建表空间
    oracle 创建表空间、创建用户管理该表空间
    后台获取数据,动态更新到网页--无闪烁刷新
    Java获取当前路径
    最实用销售24种技巧(业务必看)转
    四种类型的客户(转)
    800个小炒
    商务称呼礼仪
    人际沟通交流技巧(转)
    拒绝礼仪与技巧(转)
  • 原文地址:https://www.cnblogs.com/fengwenzhee/p/9914473.html
Copyright © 2011-2022 走看看