最近在写springboot的项目,在打包的时候发现无论是怎么打都不是最新的代码,子项目中的代码都没有更新,后面使用maven-assembly-plugin插件也是一样,甚至有的新增的依赖包都没有打进去,后面在检查依赖包日期的时候发现子项目jar包的依赖是两天之前,然后我回想到之前打包的时候用的是install,然后再次使用install打包之后发现所有的jar都更新了,并且所有的jar也都在maven仓库中了。
在打包的时候要先clean,然后compiler,然后install,最后package。这是最完整的步骤。
切记在root下
二,手动导入第三方jar,通常是公司自己的开发类库
mvn install:install-file -Dfile=完整绝对路径 -DgroupId=jar包的groupId -DartifactId=jar包artifactId -Dversion=jar包版本 -Dpackaging=jar
三,install时报
Failed to execute goal org.apache.maven.plugins:maven-dependency-plugin:3.1.1:copy-dependencies (default) on project worksite-monitor-consume: Artifact has not been packaged yet. When used on reactor artifact, copy should be executed after packaging: see MDEP-187.
部分POM:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<!-- 复制第三方 jar 到项目目录下的 target/lib/ 下 -->
<execution>
<goals>
<!--
takes the list of project direct dependencies and optionally transitive
dependencies and copies them to a specified location, stripping the version
if desired.
This goal can also be run from the command line.
-->
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/lib</outputDirectory>
<excludeScope>provided</excludeScope>
<!-- 配置的作用:跳过复制第三方依赖这一步。这是在首次上传
第三方依赖到服务器之后,启用这个选项,可以不用在打包时
重复复制,节省时间。-->
<skip>false</skip>
</configuration>
</execution>
</executions>
</plugin>
解决办法:先把这部分插件注释掉,在install就可以了,后面再放开就行了
maven 打包后mapper与xml不在同一个文件夹下,如下图:
图中的这两个包名称完全一样,但是打包后的这两个完全一样的文件夹却能同时存在,这明显是不对的,其实你只要打开你的项目源文件看一下目录结构就能明白了,class的目录结构一定是一级一级的,如下图:
但是xml所在目录一定不是这样,不然就不会出问题,所以xml所在目录一定是下面这样
这种把文件夹名称与实际的包名一致,但是其实这只是文件夹名称罢了,并不是多级目录,实际上xml所在的目录结构也一定要与class一致才能在打包的时候打包到一起,所以把xml格式改成下面这样就可以了:
其实导致这问题出现的原因大多是在创建xml目录的时候是直接class包名输入了,并不是创建了多级目录