maven项目依赖了几个额外的jar包一直都无法打进最终jar,不知道哪里出了问题.一直对这块不甚清楚,就大概梳理一下

默认打包方式:

  maven项目下,默认编译目录为

  1. src/main/javasrc/test/java

  和

  1. src/main/resoucessrc/test/resources

所以按照默认条件,其他目录的东西都不会被打进去,而且这些目录底下的一些非符合条件文件也不会被打包,java目录下只会打包.java文件,具体看target/classes目录下的文件即可

除非特别指定,否则,打包时将会把target/classes目录下的东西打包成jar

那么问题来了,怎么把想要加入打包的东西弄到目录target/classes下呢

这个是由resource决定的,当需要将一些特殊文件打包时,需要额外配置resource标签:

  比如经常碰到的在src/main/java中写的xml需要打包到jar,需要配置:

  1. <build>
  2. <!-- 资源目录 -->
  3. <resources>
  4. <resource>
  5. <!-- 设定主资源目录 -->
  6. <directory>src/main/java</directory>
  7.  
  8. <!-- maven default生命周期,process-resources阶段执行maven-resources-plugin插件的resources目标处理主资源目下的资源文件时,只处理如下配置中包含的资源类型 -->
  9. <includes>
  10. <include>**/*.xml</include>
  11. </includes>
  12.  
  13. <!-- maven default生命周期,process-resources阶段执行maven-resources-plugin插件的resources目标处理主资源目下的资源文件时,不处理如下配置中包含的资源类型(剔除下如下配置中包含的资源类型)-->
  14. <excludes>
  15. <exclude>**/*.yaml</exclude>
  16. </excludes>
  17.  
  18. <!-- maven default生命周期,process-resources阶段执行maven-resources-plugin插件的resources目标处理主资源目下的资源文件时,指定处理后的资源文件输出目录,默认是${build.outputDirectory}指定的目录-->
  19. <!--<targetPath>${build.outputDirectory}</targetPath> -->
  20.  
  21. <!-- maven default生命周期,process-resources阶段执行maven-resources-plugin插件的resources目标处理主资源目下的资源文件时,是否对主资源目录开启资源过滤 -->
  22. <filtering>true</filtering>
  23. </resource>
  24. </resources>
  25. </build>

  所以,如果要加入jar包同样需要加入resource

  1. <resource>
  2. <directory>lib</directory>
  3. <targetPath>BOOT-INF/lib/</targetPath>
  4. <includes>
  5. <include>**/*.jar</include>
  6. </includes>
  7. </resource>

把lib目录下的所有jar都加入到resource中,就能看到target/class目录下有这些jar包啦

不过jar包有了,还是会报错:

org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.5.1:compile (default-compile) on project op-realname-test: Compilation failure
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:212)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:307)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106)
at org.apache.maven.cli.MavenCli.execute(MavenCli.java:863)
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:288)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:199)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
at org.codehaus.classworlds.Launcher.main(Launcher.java:47)
Caused by: org.apache.maven.plugin.compiler.CompilationFailureException: Compilation failure
at org.apache.maven.plugin.compiler.AbstractCompilerMojo.execute(AbstractCompilerMojo.java:972)
at org.apache.maven.plugin.compiler.CompilerMojo.execute(CompilerMojo.java:129)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:207)
... 21 more
[ERROR]
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException

编译失败了,并且是因为缺少类引起的,而且是maven-compiler-plugin插件报错,检查发现,由于加入了新的资源,打包插件中也需要加入相应包路径:

  1. <plugin>
  2. <artifactId>maven-compiler-plugin</artifactId>
  3. <configuration>
  4. <source>1.8</source>
  5. <target>1.8</target>
  6. <encoding>UTF-8</encoding>
  7. <compilerArguments>
  8. <!-- 打包本地jar包 -->
  9. <extdirs>${project.basedir}/lib</extdirs>
  10. </compilerArguments>
  11. </configuration>
  12. </plugin>

done

maven项目打包额外lib目录的更多相关文章

  1. maven项目中,lib目录下有自己私有的包,则需要配置一下代码,然后进行打包

    <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compi ...

  2. eclipse下将maven项目打包为jar(1.不带第三方jar,2.带第三方jar)

    由于项目需要讲maven项目打包为jar包,由于之前没类似经验,百度找例子走了不少弯路,这边随手记录下,网上说的 开发工具:eclipse jar包管理:maven 一般打包出来的jar包分为两种 一 ...

  3. 解决eclipse部署maven项目无法导入lib的问题

    eclipse版本为2018-12(4.10.0) 1.默认tomcat的server配置 改成: 2.项目部署 按上面的配置,项目会部署到你配置的本地tomcat的webapps目录下. 部署了项目 ...

  4. maven 项目打包 及window下部署到tomcat

    1.maven项目打包 2.将war文件拷贝到tomcat目录webapps下(不要再建目录)3.将必要的jar文件拷贝到tomcat目录libx下 war包 或jar 包 会生成到项目所在路径 的t ...

  5. maven项目打包运行出错问题汇总

    maven项目打包时总会出现莫名其妙的错误,现总结一下. 打包方式:在maven项目底下运行cmd,输入mvn clean package,会自动按pom.xml的配置打成包.使用java -jar ...

  6. 怎么将maven项目打包成war包

    问题:我在eclipse上能运行,然后我想将这个maven项目打包成war然后放到另外一台机子上(其实是手动放在tomcat的webapp目录中),提供外部访问.现在问题是,一直maven项目打包一直 ...

  7. 如何将maven项目打包成可执行的jar

    如何将maven项目打包成可执行的jar 分类: maven2010-12-17 10:18 10411人阅读 评论(2) 收藏 举报 jarmavenassemblyjava 方法一:将项目及所依赖 ...

  8. ******可用 SpringBoot 项目打包分开lib,配置和资源文件

    spring-boot多模块打包后,无法找到其他模块中的类https://blog.csdn.net/Can96/article/details/96172172 关于SpringBoot项目打包没有 ...

  9. Storm系列(三):创建Maven项目打包提交wordcount到Storm集群

    在上一篇博客中,我们通过Storm.Net.Adapter创建了一个使用Csharp编写的Storm Topology - wordcount.本文将介绍如何编写Java端的程序以及如何发布到测试的S ...

随机推荐

  1. Codeforces.1110E.Magic Stones(思路 差分)

    题目链接 听dalao说很nb,做做看(然而不小心知道题解了). \(Description\) 给定长为\(n\)的序列\(A_i\)和\(B_i\).你可以进行任意多次操作,每次操作任选一个\(i ...

  2. C# 结合html5 批量上传文件和图片预览

    html5 新特性 <input id="imgsf" type="file" name="imgsf" multiple /> ...

  3. PHP的json_encode不兼容JSON_UNESCAPED_UNICODE的解决方案

    PHP5.4才支持JSON_UNESCAPED_UNICODE这个参数,此参数是让中文字符在json_encode的时候不用转义,减少数据传输量.但在PHP5.3中,就得自己写个函数来实现,以下就是解 ...

  4. Django session 源码流程

    流程 Django session源码流程 首先执行的是SessionMiddleware的init方法 import_module(settings.SESSION_ENGINE) 导入了一个 dj ...

  5. PHP 入门学习教程及进阶(源于知乎网友的智慧)

    思过崖历程: 自学的动机.自学的技巧.自学的目标三个方面描述学习PHP的经历 一.自学的动机: 一定要有浓厚的兴趣,兴趣是最后的老师,可以在你迷茫的时候不断地支撑着你走下去. 自学不是为了工作,不是为 ...

  6. 写一个简单的JQ插件(例子)

    虽然现在 vue angular react 当道啊但是那 JQ还是有一席之地很多很多的小单位啊.其实还会用到 我也放一个例子吧虽然我也不是很肯定有没有人写的比我更好啊但是我相信 我这个还是蛮实用的 ...

  7. python流程控制之if、 while和for 循环

    1.if 语句 语法1 if 条件:# 代码1# ... # cls='human'# sex='female'# age=18## if cls == 'human' and sex == 'fem ...

  8. BZOJ4267 : 小强的颜色

    首先剔除$1$号心情不能到达的无用心情,然后采用分割法进行DFA的最小化. 每次遍历所有集合,将集合中和集合中第一个心情行为或者转移所在集合不同的心情放入新集合中. 最后按字典序依次给每个集合编号即可 ...

  9. BZOJ4962 : 简单的字符串

    枚举子串的中心,往两侧扩展,将两侧对应位置的字符交替写下来,得到一个字符串$S$. 若前后长度为$L$的子串循环同构,则在$S$中它们对应长度为$2L$的前缀,需要满足它可以由不超过$2$个偶回文串拼 ...

  10. Js全等和等于

    Javascript只有六个假值(用在条件if的判断) 全等于 类型不同,返回false类型相同,则 等于 类型相同:同上=== 类型不同:尝试类型转换==[不是真值和假值的比较] null == u ...