-
新建了一个lib包在项目根目录下,与src同级。(也可不同级,具体看自己喜好)
-
pom文件中依赖这样写:
<dependency>
<groupId>com.abc.api</groupId>
<artifactId>abc</artifactId>
<version>1.0</version>
<scope>system</scope>
<systemPath>${project.basedir}/lib/abc.jar</systemPath>
</dependency>
<dependency>
<groupId>com.abc2.api</groupId>
<artifactId>abc2</artifactId>
<version>2.0</version>
<scope>system</scope>
<systemPath>${project.basedir}/lib/abc-2.0.jar</systemPath>
</dependency>
${project.basedir}
是自带变量,指的是当前项目的根目录。
通过这种方式引入依赖后,在编码的时候没有问题,但是用mvn clean package打成jar包后运行就是报错,找不到这些jar包中的相关类。
把jar包解压后在BOOT-INF/lib里面也确实没有发现用上述方式引入的jar包,看来是没有把lib目录里面的jar打进去。
修改pom文件,在build标签下增加如下配置:
lib BOOT-INF/lib/ **/*.jar src/main/resources BOOT-INF/classes/
目的就是把src/lib下的jar打到BOOT-INF/lib下,但是必须要增加第二个resource,不然src/main/resources下的配置文件又打不进jar包了。
如果要打成war包,则pom文件需要这样改:
<!--设置maven-war-plugins插件,否则外部依赖无法打进war包 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<webResources>
<resource>
<directory>lib</directory>
<targetPath>WEB-INF/lib/</targetPath>
<includes>
<include>**/*.jar</include>
</includes>
</resource>
</webResources>
</configuration>
</plugin>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope><!-- 打成
加入依赖jar - 1.Druid、Mysql、SpringBoot-Mybatis起步依赖、PageHelper分页插件等
配置数据库源+数据库连接池 - 启动类需要读取数据源的xml配置
加入Entity-Mapper-Mappers资源文件 - 启动类扫描mapper所在包
常见问题的解决
1.扫描不到mappers资源配置文件
加入别名mybatis.type-aliases-package与mybatis.mapper-locations资
我们现在是需要把项目打包成war包了,那么打包的时候就不需要内嵌web容器了,需要排除掉。这里需要选择我们的tomcat Server启动。在build下设置项目最终打包的项目名称,如果不设置也是可以的, 默认显示的就是是项目name加上版本号。引入外部jar成功,在自己的项目中如果使用了外部jar的方法修改了项目代码,需要重新进行打包部署。OK,项目中的接口可以正常访问, 引入外部jar包之后,项目打包并部署依然是成功的。个外部的jar包, 我这里使用的是guava-31.1-jre.jar作为演示。
maven怎么打war包
一个童鞋问我maven怎么打war包,一听有点懵,懵的不是maven到底该怎么打war包,我不会?而是觉得maven打war包需要配置吗,也许只有最简单的才是最适合的。maven配置文件pom.xml的基本结构:
<projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http...
对于一些内部项目的jar,有时候不会放到maven库上去,那么idea中maven项目引入的第三方jar包,如何打入到要发布的包里面呢?两步,
1、pom中对关联项的依赖
注意 scope 设置为 system,systemPath 可设置第三方jar本地路径。
2、打包插件的配置
原springboot打包插件加了一个Configuration,
在开发过程中,我们遇到一些Maven仓库没有的jar包(比如公司自己开发的一些jar包),这时就不能通过pom直接引入。下面演示如何在项目中引入这些本地或第三方jar包。
解决方案
在与src同级的目录下新建一个lib目录,然后将本地jar包放在lib目录下:
(1)首先在依赖中添加需要引入的jar包:
<dependency>
<groupId>com.hangge.util</groupId>
嵌入式 Servlet 容器的应用打成为可执行的 jar 包,优点是 简单、便携;缺点是 不支持 JSP、优化定制比较复杂(使用定制器、全局配置文件修改)
Spring Boot 提供程序员可以使用外置的 Servlet 容器,本文以外置的 Tomcat 服务器为例,此时应用要打包成为...
问题描述:在对mvc工程打包时,尝试了很多办法,比如打war包放入tomcat服务器跑,但是可能是因为项目本身使用的是jetty服务器,因此会报出一些莫名其妙的错误🤷♀️。然后尝试下载jetty服务器,将打好的war包放入jetty运行,可是可能因为不熟悉jetty,运行好像没问题,但是测试不出结果🤷♀️。后来尝试打可执行jar,在网上找了打fat jar的方法,但是实际测试的时候问题也是层出不穷🤷♀️。。。我的解决方法。...
&amp;amp;amp;lt;project xmlns=&amp;amp;quot;http://maven.apache.org/POM/4.0.0&amp;amp;quot; xmlns:xsi=&amp;amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;amp;quot;
xsi:schemaLocation=&amp;amp;quot;h
解决方法:到maven本地仓库中找到对应的依赖版本,比如我的在D:\maven\apache-maven-3.8.1\localRepository\org\springframework\boot\spring-boot-maven-plugin。然后用2.7.8替代掉2.1.1RELEASE即可。maven-war-plugin同理。
Spring Boot的Maven插件(Spring Boot Maven plugin)能够以Maven的方式为应用提供Spring Boot的支持,即为Spring Boot应用提供了执行Maven操作的可能。Spring Boot Maven plugin能够将Spring Boot应用打包为可执行的jar或war文件,然后以通常的方式运行Spring Boot应用。Spring ...
在做一个语音系统时遇到了问题:将外部的语音jar包,按照idea传统的方式添加jar包,但是却没有添加到项目编译的war中。然后项目启动之后,一直报错———Caused by: java.lang.NoClassDefFoundError: Lcom/iflytek/mt_scylla/mt_scylla;。下面就演示下我自己怎么解决这个问题的。
1.项目下创建libs的文件夹,将相应需要导入的...