在进行Java Web开发时,使用IDEA工具将项目打包成JAR包是一个常见的操作。在这个过程中,可能会遇到一种情况,即打包生成的JAR包不包含项目所需的依赖JAR包。本文将就如何使用IDEA工具实现打包不带依赖JAR包的JAVA Web应用进行详细分析。
需要明确为什么需要将项目打包成JAR包而不包含依赖JAR包。一种情况是为了减小JAR包的体积,使其更加轻量化,方便部署和传输。另一种情况是为了避免与其他项目之间的依赖冲突,将项目的依赖JAR包与其他项目的依赖JAR包隔离开来。因此,对于某些特定需求,打包不包含依赖JAR包的JAVA Web应用是有必要的。
接下来,我们将介绍如何使用IDEA工具来实现这一目标。在IDEA中,首先需要确保项目中所依赖的JAR包已经导入并通过Maven或Gradle等构建工具管理。打开IDEA工具,找到项目的配置文件(例如pom.xml或build.gradle),在其中添加相应的配置。
对于使用Maven构建项目的情况,可以在pom.xml配置文件中添加如下配置:
“`xml
org.apache.maven.plugins
maven-assembly-plugin
3.3.0
jar-with-dependencies
single
“`
这段配置指定了使用maven-assembly-plugin插件进行JAR包的打包,并且排除了依赖JAR包,只打包项目本身的代码和资源文件。配置完成后,使用Maven中的package命令即可生成不带依赖JAR包的JAR文件。
对于使用Gradle构建项目的情况,可以在build.gradle配置文件中添加如下配置:
“`gradleplugins { id “java”}jar { from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } } exclude “META-INF/*.SF”, “META-INF/*.DSA”, “META-INF/*.RSA”}“`
这段配置使用Gradle的jar任务,将项目编译后的class文件和资源文件打包成JAR包,并通过exclude排除了依赖JAR包。在项目根目录下执行gradle build命令即可生成不带依赖JAR包的JAR文件。
通过对IDEA工具中Maven或Gradle构建工具的配置,可以很容易地实现将JAVA Web应用打包成不包含依赖JAR包的JAR文件。这样的操作有助于简化项目的部署和传输,同时也能避免依赖冲突的问题。在实际开发过程中,根据具体需求,选择合适的打包方式,能够更好地管理项目的依赖关系,提高开发效率。
idea maven 打包不包含jar包
目标 1. 将依赖第三方jar包都打进去 2. 将工程java 目录下所有文件夹和配置文件,包括资源文件都打入jar包,根据目录来 3. 打出jar文件可直接运行方法:采用 maven-assembly-plugin环境:IDEA 14.1.5 JDK 1.8其中**/*写法,是为了保证各级子目录下的资源文件被打包,svn相关文件排除。
写法<build> <resources><resource><directory>src/main/java</directory><includes><include>**/*</include></includes><excludes><exclude>**//*</exclude></excludes><filtering>false</filtering></resource></resources></span><plugins><plugin><groupId></groupId><artifactId>maven-compiler-plugin</artifactId><version>2.3.2</version><configuration><source>1.8</source>
idea中写java程序怎么不自动引入jar包
说明该类不是可编译文件。
在project Structure中(快捷键ctrl+alt+shift+s)选Modules将你带红圈的文件添加上,将你带红圈的文件夹设为Sources。
一般是src文件夹,点Sources文件夹,然后点击OK。
设置为可编译文件再去工程中看就没红圈了。
idea gradle工程怎么打jar包
一 Idea打包jar 因为本人用的开发环境是IntelliJ IDEA,开始的时候研究了一下利用这个开发工具进行打包首先按F4或者点击IDEA右上角这地方进入项目结构管理器选择这里面的Artifacts。
开始我完全不知道Artifacts是什么东西,后来查阅了点资料:Artifacts是maven中的一个概念,表示某个module要如何打包,例如war exploded、war、jar、ear等等这种打包形式;意思我理解的就是Artifacts就是告诉我们的程序因该如何打包这个项目。
之后新建一个Artifacts这有两个选项选择第二个,从模块中引入,点击进去后会有一些设置,如下:module是你需要打成jar包的项目MainClass是运行的主函数,如果不需要运行则可以不选择jarfilesfromlibraries是项目打包的方式,下面选项大致的含义:1:extracttothetargetjar:把所有文件倒入进一个jar包里2:copytothe。
。
。
。
:把项目的依赖包导出和项目一个目录,通过文件来引用jar包。
这里如果你的项目需要打成一个可运行的jar包推荐第二种,反之第一种。
设置完之后,就会新建一个xxx:jar,并进入进入xxx:jar的编辑页面在我们需要进行一个输出目录布局的设置,我们可以看到,已经编译好的项目的jar文件(我的是)和其他导入的jar包混到一起的,很杂,我是点击outputlayout下最左边的文件夹图标新建了一个lib文件,把其他jar包拖拽进来(建议,也可以直接点OK完成)但是我们这样做的话依赖的jar包的目录就会产生变化,这时候我们需要选中我们项目,在下方然后修改中的Class Path修改成OK到了这一步后Artifacts是写好了,保存之后就可以用来生成jar文件点击build Artifacts后选择你刚刚生成的artifactsbuild后就会在out的目录下生成对应的jar文件最后进入项目目录输入命令java -jar 就可以跑起来了如下二gradle打包jar 本以为项目打成jar包并且可以完美运行了后,这事就差不多完了,可是项目组长说:你这样打包是可以,但是如果其他人用Eclipes来开发的话,就不管用了。
。
。
。
。
。
哎,好不容易搞出来的一个方法被pass掉了,无奈之下就只有另换方法。
因为项目我是用的gradle构建的,第一时间想起了用gradle打包。
利用gradle进行打包其实非常非常简单,但是因为我平常只是简单用它来导包,以及构建项目,它的基本的一些东西不是很清楚,所以走了些弯路花了大半天的时间才搞出来,所以说有时候需要了解一下你所用的东西的一些基础和原理。
在build,gradle中首先需要加上apply plugin: javaapply plugin: idea 来定义你自己项目使用的插件,apply plugin: idea用于把项目构建成idea项目,apply plugin: java用于添加Java插件,以及一些内置任务,打包jar就要用到这里的插件。
version = 1.0repositories {mavenCentral()} 这里用来声明版本号以及添加maven中心仓库地址dependencies {compile 。
。
。
。
。
。
。
} 这里来添加项目所需要的依赖包jar {String someString = {someString = someString + lib//+} //遍历项目的所有依赖的jar包赋值给变量someStringmanifest {attributes Main-Class: Class-Path: someString}} 打包的时候,这个地方很重要,用来设置jar文件的相关属性,这个地方把我坑了有点久,最后补了下gradle的基础知识,就搞出来了,这篇博客写gradle基础写的还可以,推荐给大家看看首先这定义了一个someString用来存放依赖包的信息,通过拿到所有的运行时的依赖jar包,然后遍历他,通过获取到每个的jar包的name,赋值。
manifest即是编译完成后生成jar包中的配置信息task copyJar(type:Copy){from (build/libs/lib)}task release(type: Copy,dependsOn: [build,copyJar]) {// from conf// into (build/libs/eachend/conf) } 建立函数copyJar用于把依赖的jar复制到对应的目录下。
函数release即是我们打包的时候的执行的函数,dependsOn[build,copyJar]这里会让执行relese函数的时候先执行build(系统自带的函数)和copyJar最后通过gradlerelease命令进行打包
常见问题FAQ
- 本站资源可以代理扶持吗?有没有售后和技术支持?
- 具体请参照:https://www.wxzygp.com/345.html
- 遇到问题无法解决怎么办?
- 免费下载或者VIP会员资源能否直接商用?
- 购买该资源后,可以退款吗?