精华内容
下载资源
问答
  • 解决maven打包时手动添加依赖jar打不进去的情况问题是这样的,因为项目中用到了拼多多自定义的jar,也就是远程仓库里没有的jar,所以想要引用就必须自己手动添加进去,在idea中运行是没问题的,但是打包到测试...

    问题是这样的,因为项目中用到了拼多多自定义的jar包,所以想要引用就必须自己手动添加进去,在idea中运行是没问题的,但是打包到测试环境后启动不了,发现缺少依赖。整了许久,现在记录一下。

    java.lang.NoClassDefFoundErrorClassNotFoundException异常,经过一查找才发现是因为打包的时候依赖jar包没打进去;

    废话不多说,直接上解决办法

    先创建lib目录,设置为资源库
    在这里插入图片描述

    lib目录
    然后pom文件引入jar包

    <dependency>
                <groupId>com.pdd.pop</groupId>
                <artifactId>pop-sdk</artifactId>
                <version>1.11.55</version>
                <scope>system</scope>
                <systemPath>${project.basedir}/lib/pop-sdk-1.11.55-all.jar</systemPath>
            </dependency>
    
    		<groupId>com.pdd.pop</groupId>
    		<artifactId>pop-sdk</artifactId>
    		<version>1.11.55</version>
    

    里面文字随便写

    <scope>system</scope>
    <systemPath>${project.basedir}/lib/pop-sdk-1.11.55-all.jar</systemPath>
    

    重要的是system,scope指定了system域是系统范围使用的,在打包时不会将这个空间的包打进lib目录下。然后path指定了lib目录下的jar包

    但是此时已经可以在系统中使用了,此时系统中有了jar包依赖了
    在这里插入图片描述
    手动添加依赖jar包就完成了

    但是此时的依赖jar包并不会被打包打进去。
    因为scope,maven中scope的默认值是compile

    scope的分类

    1)compile 默认是compile。compile表示被依赖项目需要参与当前项目的编译,包括后续的测试,运行周期也参与其中,是一个比较强的依赖。打包的时候通常需要包含进去。

    2)test 表示依赖项目仅仅参与测试相关的工作,包括测试代码的编译,执行。

    3)runtime 表示被依赖项目无需参与项目的编译,不过后期的测试和运行周期需要其参与。与compile相比,跳过编译而已。在终端的项目(非开源,企业内部系统)中,和compile区别不是很大。比较常见的如JSRXXX的实现,对应的API jar是compile,具体实现是runtime的,compile只需要知道接口就足够了。oracle jdbc驱动jar包就是一个很好的例子,一般scope为runtime。 另runtime的依赖通常和optional搭配使用,optional为true。即可以用A实现也可以用B实现。

    4)procided 意味着打包的时候可以不用包进去,别的设施(web container)会提供。事实上该依赖理论上可以参与编译、测试、运行等周期。相当于compile,但是打包阶段做了exclude的动作。

    5)system 和provide相同,不过被依赖项不会从maven仓库抓,而是从本地系统文件拿,一定要配合systemPath使用

    systempath

    当maven依赖本地而非repository中的jar包,sytemPath指明本地jar包路径

    解决方案一:
    我认为最简单省事的解决方案
    在这里插入图片描述

    <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
        <configuration>
            <includeSystemScope>true</includeSystemScope>
        </configuration>
    </plugin>
    

    <includeSystemScope>true</includeSystemScope>代表maven打包时会将外部引入的jar包(比如在根目录下或resource文件下新加外部jar包)打包到项目jar,在服务器上项目才能运行,不加此配置,本地可以运行,因为本地可以再lib下找到外部包,但是服务器上jar中是没有的。

    解决方案二:

    将自己需要依赖的jar 打包到本地maven 库 (需要配置mvn)

    打开cmd 窗口 输入

    mvn install:install-file
    -Dfile=E:/xxx/xxx.jar
    -DgroupId=com.pdd.pop
    -DartifactId=pop-sdk
    -Dversion=1.11.55
    -Dpackaging=jar 
    或者idea里面也可以
    在这里插入图片描述
    以上是springboot项目的解决方案,至于像war包的解决方案可以参考一下我之前看到的一篇文章,传送门附上
    java叶新东老师的一个文章
    就是在pom.xml文件的 build 标签下面加入以下代码即可

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-war-plugin</artifactId>
        <version>2.6</version>
        <configuration>
            <webResources>
                <resource>
                    <!-- 源jar包所在位置, ${project.basedir} 表示当前目录的路径 -->
                    <directory>${project.basedir}/lib</directory>
     
                    <!-- 打包后的目标文件夹  ,也就是你打包后的war包或者jar包的目录  -->
                    <targetPath>WEB-INF/lib</targetPath>
                    <filtering>false</filtering>
                    <includes>
                        <!-- 把所有的jar包都打进去 -->
                        <include>**/*.jar</include>
                    </includes>
                </resource>
            </webResources>
        </configuration>
       </plugin>
    

    至此,就全部记录完成了。

    结尾:

    如果你都看到了这里了,
    要是能帮到你的话,
    就点个赞吧,
    毕竟码字不易啊。

    Alt

    展开全文
  • 前言我们在项目开发中经常会将一些通用的类、方法等内容进行打包,打造成我们自己的开发工具,作为各个项目的依赖来使用。一般的做法是将项目导出成Jar,然后在其它项目中将其导入,看...解决方法自定义Maven依...

    b86ab53666031339facf374225509443.png

    前言

    我们在项目开发中经常会将一些通用的类、方法等内容进行打包,打造成我们自己的开发工具包,作为各个项目的依赖来使用。

    一般的做法是将项目导出成Jar包,然后在其它项目中将其导入,看起来很轻松,但是存在一个问题,如果你修改了Jar包的内容,岂不是要每个项目都重新导入,这显然是一种很不智能的做法。

    那我们要怎样避免这种“牵一发而动全身”的效果呢?这里给大家介绍一种灵活的解决方法。

    解决方法

    自定义Maven依赖

    Maven是一个项目管理工具,其中一个重要的组成部分就是依赖管理系统,用来解决项目的各种依赖,与传统的导Jar包方式相比,Maven能按照你定义的依赖描述来自动导入Maven本地或远程仓库中各种依赖包,不需要手动的复制粘贴。

    实现过程

    1.首先新建一个基于Maven的Java工程,我们将其命名为“project-monitor”

    2.导入各种需要的依赖,包括spring的各种依赖,这里还导入了spring-jdbc的依赖包用来进行后面的数据源配置测试,pom.xml文件如下:

    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">

    4.0.0

    com.demo

    project-monitor

    0.0.1

    UTF-8

    yyyy-MM-dd HH:mm:ss

    4.3.7.RELEASE

    org.springframework

    spring-context-support

    ${spring-version}

    compile

    org.springframework

    spring-jdbc

    ${spring-version}

    compile

    org.springframework

    spring-test

    ${spring-version}

    test

    log4j

    log4j

    1.2.17

    mysql

    mysql-connector-java

    6.0.6

    junit

    junit

    4.12

    3.定义数据源bean,spring上下文文件project-monitor.xml如下:

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"

    xsi:schemaLocation="

    http://www.springframework.org/schema/beans

    http://www.springframework.org/schema/beans/spring-beans.xsd

    http://www.springframework.org/schema/context

    http://www.springframework.org/schema/beans/spring-context.xsd">

    这里使用${jdbc.url}这种占位符形式进行配置,子项目使用时再对其进行填充使用

    4.项目编译打包配置,修改pom.xml文件,添加以下配置节点:

    ${project.artifactId}

    maven-compiler-plugin

    1.6

    1.6

    utf8

    org.apache.maven.plugins

    maven-jar-plugin

    true

    jars

    project-monitor

    ${project.version}

    kMacro

    ${maven.build.timestamp}

    5.执行Maven编译打包命令,在项目根目录(如:D:\project-monitor)下执行以下命令(需配置Maven环境变量):

    mvn clean package

    6.将打包后的Jar包安装到本地Maven仓库中,首先定位到jar所在目录(如:D:\project-monitor\target),然后执行命令:

    mvn install:install-file -Dfile=project-monitor.jar -DgroupId=com.demo -DartifactId=project-monitor -Dversion=0.0.1 -Dpackaging=jar

    7.安装完成

    8.其它工程导入该依赖:

    com.demo

    project-monitor

    0.0.1

    9.项目修改,只需重新执行5和6的命令即可,子项目不需任何处理

    注意:pom.xml文件并不会被子项目所共享,子项目必须单独导入所有需要的依赖

    结语

    大功告成,一个通用灵活的自定义Maven依赖就开发完成了,这里只是介绍一下Maven依赖包的开发过程,之后会详细介绍如何在子项目中使用安装的依赖包。

    文章项目源码已发布到Github:https://github.com/ZKHDEV/MultDependPjo

    展开全文
  • 问题是这样的,因为项目中用到了自定义的jar,也就是远程仓库里没有的jar,所以想要引用就必须自己手动添加进去,在idea中运行是没问题的,但是打包到测试环境后发现经常报错 java.lang.NoClassDefFoundError 和...

    这个问题忙了我一天多的时间,因为太棘手了, 所以记录下来,防止忘记;

    问题是这样的,因为项目中用到了自定义的jar包,也就是远程仓库里没有的jar,所以想要引用就必须自己手动添加进去,在idea中运行是没问题的,但是打包到测试环境后发现经常报错

    java.lang.NoClassDefFoundError   和  ClassNotFoundException 异常,经过一查找才发现是因为打包的时候依赖jar包没打进去;

    一开始是在项目中导入了本地的jar包。发现没用

    网上找到问题说是因为scope指定了system域是系统范围使用的,在打包时不会将这个空间的包打进lib目录下;

    然后也在项目中手动添加了这个依赖jar包;发现还是不行

    但是不管是mvn install 还是mvn package 打包后,在war包里的 WEB-INF/lib 目录下都没看到这个jar包

    根据这个问题,网上尝试了很多方法都没用,最后自己在一个网站上找到了方法
     

    解决方案

    1、在pom.xml文件的 build 标签下面加入以下代码即可

    
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-war-plugin</artifactId>
        <version>2.6</version>
        <configuration>
            <webResources>
                <resource>
                    <!-- 源jar包所在位置, ${project.basedir} 表示当前目录的路径 -->
                    <directory>${project.basedir}/lib</directory>
    
                    <!-- 打包后的目标文件夹  ,也就是你打包后的war包或者jar包的目录  -->
                    <targetPath>WEB-INF/lib</targetPath>
                    <filtering>false</filtering>
                    <includes>
                        <!-- 把所有的jar包都打进去 -->
                        <include>**/*.jar</include>
                    </includes>
                </resource>
            </webResources>
        </configuration>
    

    加好后的代码如下 

     

    2、因为有了  <directory>${project.basedir}/lib</directory>  ,所以我们需要在当前项目下建立一个lib文件夹,然后把需要打包的jar放进去

     

    3、添加这段代码后再执行mvn packge 或者mvn install。我们可以看到,jar包已经打进去了

    展开全文
  • <build> <plugins> <plugin> <artifactId>maven-assembly-plugin</artifactId> <configuration> <descriptorRefs> <descr..
     <build>
            <plugins>
                <plugin>
                    <artifactId>maven-assembly-plugin</artifactId>
                    <configuration>
                        <descriptorRefs>
                            <descriptorRef>jar-with-dependencies</descriptorRef>
                        </descriptorRefs>
                        <archive>
                            <manifest>
                                <mainClass>liu.netty.Main</mainClass>
                            </manifest>
                        </archive>
                    </configuration>
                    <executions>
                        <execution>
                            <id>make-assembly</id>
                            <phase>package</phase>
                            <goals>
                                <goal>single</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>

    pom添加此内容后。执行mvn package即可或者idea执行

    展开全文
  • maven项目的时候,明明已经在pom.xml文件中加入和对应文件的依赖,但是程序运行时仍然报错,说找不到对应的jar。如下图所示。 出现这种错误的原因是,虽然加入和依赖,但是并没有允许idea使用通过该依赖添加的...
  • 基于最近项目部署,需要打jar,然后涉及接口调用,反复测试,出现了各种问题,最后找到合理方案,特做以下总结: 一、延伸知识:Springboot打jar命令 1.把之前打过的通通干掉 mvn package clean -Dmaven....
  • Maven 自定义插件

    2021-03-16 20:33:51
    修改pom org.apache.maven maven-plugin-api 3.5.0 org.apache.maven.plugin-tools maven-plugin-annotations 3.5 这两个依赖自定义插件必须的依赖,代表了它是一个Mojo工程,里面包含了一些Mojo的接口和抽象类...
  • Archetype是一个Maven项目的模板工具,它定义了一类项目的基本架构。Archetype为开发人员提供了创建Maven项目的模板,同时它也可以根据已有的Maven项目生成参数化的模板。通过archetype,开发人员可以很方便地将一...
  • Maven命令打包jar到本地仓库 准备工作,首先配置maven环境变量,已经配置了可以忽略maven的配置. 将下载的maven文件解压到D:\maven\apache-maven- 3.5.3-bin\apache-maven-3.5.3目录下: 新建环境变量MAVEN_HOME...
  • 目的:我的目的就是将项目所有的文件,包括pom文件中依赖的jar都打进一个jar里面。过程:将下面的内容放到pom文件里面。maven-assembly-plugincom.allen.capturewebdata.Mainjar-with-dependencies执行:输入...
  • 第一步创建一个maven工程 第二步、粘贴下面的内容到pom中 打包方式pom properties定义变量,用于版本管理 dependencyManagement中引入spring-boot-starter-parent注意scope为import,type为pom(表示以pom的方式...
  • 作为小白,搭建maven工程的时候,最常碰见的一个问题,就是配置的maven库中缺少某个,看着红色的叉子,心情就很糟了。一位Java大神告诉我这个问题一般是两种解决:1. 确实不存在,或者的目录下有乱七八糟的...
  • 1、maven官网下载maven最新版本 Maven – Download Apache Maven 2、下载好后,解压,打开 apache-maven-3.8.3-bin\apache-maven-3.8.3\conf 中的 settings.xml 文件(写字板打开) 翻到159行 将159~165的...
  • 于是,本着面向“百度”编程的原则,去网上查了下,不是十多年前的“古董”文章,就是流程不清楚,有的需要部署到私服,有的包含大量jar,十分繁琐。项目的组成也不清楚,连最重要的文件archetype-metadata.xml都...
  • 建议起初使用默认位置,熟悉后使用自定义位置 3.maven配置问题 settings.xml文件 55行处位置大概 配置本地仓库位置 <localRepository>D:\MavenCode\com</localRepository> 在mirrors内部,设置阿里...
  • 为了快速学习自定义 Maven 插件的过程,接下来将实现一个简单的 Hello Maven 插件,功能很简单:输出 Hello World 插件。具体步骤和操作如下。创建 Maven 新项目,选择 maven-archetype-plugin 项目向导,如图 1 所...
  • 目录 1.项目中的jar如何管理? 2.Maven模型介绍及原理分析 2.1 Maven介绍 2.2 Maven主要有两个功能 ...2.3 Maven模型介绍 ...2.4 Maven依赖管理原理分析 ...3.项目构建与Maven的关系 ...10.自定义Idea中的Maven版本
  • public classPasswordEncode {public final static String MD5 = "MD5";public final static String NONE = "NONE";public final static String SHA_256 = "SHA-256";public final static String SHA_512 = "SHA-512...
  • 下面小编就为大家带来一篇java application maven项目打自定义zip实例(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧1.配置pom.xml文件,添加build节点p2psrc/main/java...
  • 1.配置pom.xml文件,添加build节点p2psrc/main/javasrc/main/resources**/*.properties**/*.xmlconfig.propertiessrc/main/resourcesconfig.properties${project.build.directory}/configorg.apache.maven.plugins...
  • 当我们的项目模块很多的时候,我们使用Maven管理项目非常方便,帮助我们管理构建、文档、报告、依赖、scms、发布、分发的方法。可以方便的编译代码、进行依赖管理、管理二进制库等等。 由于我们的模块很多,所以...
  • 使用idea创建maven项目,maven导入依赖报红,从以下几个步骤排查解决问题:1.首先查看maven的安装和配置有没有问题。那么,要看那些内容呢。maven的安装位置、maven的setting.xml中的配置以及maven的环境变量配置。...
  • 网络不好或其他操作(例如正在下载jar包依赖的时候关了IDE或关机了),导致无法完整的下载,但是又下载了一部分。 后序再次执行下载时,由于仓库里面已经有了该jar的基本信息(_remote.repositories,maven-...
  • 今天遇到一个问题编辑器无法识别Maven导入的jarmaven 已经正常构建了,还是报红无法识别javax.mail 。 最后经过如下操作步骤,识别成功了,项目可以正常运行。 ...
  • 当开启eclipse的auto build时没有问题怀疑是eclipse自己对项目进行了build,然后把class放在了正确的位置当关闭了eclipse的build转为仅仅使用maven install命令时会提示找不到对应的自定义类就是说A模块先install...
  • 导入的外部依赖jar包中的方法不能用,显示类似 Cannot resolve cn.hutool:hutool-parent:5.6.6 这样的问题 解决方法: 清除本地缓存 点击菜单中的 “File” -> “Invalidate Caches / Restart”,然后点击对话框...
  • 原标题:Java开发小技巧:Maven多工程依赖项目 需求分析首先来...所有子项目集成打包到一个统一的目录,共享依赖包和配置文件等内容5.打包后目录结构:bin:存放脚本文件,用来设置环境变量,执行相应的jar包lib:依...
  • 最近在学springboot的自定义starter,把项目install到本地仓库后新建项目添加依赖都很顺利,但里面的死活import不了 问题描述:pom.xml添加依赖成功如下,提示也是可以import,但回车了之后死活不成功 解决...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 49,492
精华内容 19,796
关键字:

maven添加自定义依赖包