首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

浅谈 java 中构建可执行 jar 包的几种方式

有时候,由于项目的需要,我们会将源码编译工具包(class打成jar包)的形式对外提供,此时, 你的 jar 包不一定要是可执行的,只要能通过编译,能被别人 import 的方式调用就行了...classpathPrefix:如果您计划在同一目录下包含有您的所有依赖作为您将构建的 JAR,那么您可以忽略它;否则使用  classpathPrefix 来指定所有依赖 JAR 文件的前缀。...当您使用这 3 个元素配置好了 MANIFEST.MF 文件之后,下一步是所有的依赖复制到 lib 文件夹。...有一个 copy-dependencies,目标是您的依赖复制到您所选择的目录。...POM关系: 主要为依赖,继承,合成 REF: 使用maven插件对java工程进行打包 http://chenzhou123520.iteye.com/blog/1706242

3.8K50
您找到你想要的搜索结果了吗?
是的
没有找到

快速构建第一个Flink工程

构建工具 Flink项目可以使用不同的构建工具进行构建。为了能够快速入门,Flink 为以下构建工具提供了项目模版: Maven Gradle 这些模版可以帮助你搭建项目结构并创建初始构建文件。...命令执行后,你 找到一个JAR文件,里面包含了你的应用程序,以及已作为依赖添加到应用程序的连接器和库:target/-.jar。...注意: 如果你使用其他类而不是 StreamingJob 作为应用程序的主类/入口,我们建议你相应地修改 pom.xml 文件中的 mainClass 配置。...test code dependencies { // -------------------------------------------------------------- // 编译依赖不应该包含在...命令执行后,你 找到一个 JAR 文件,里面包含了你的应用程序,以及已作为依赖添加到应用程序的连接器和库:build/libs/--all.jar

1.9K31

快速构建第一个Flink工程

构建工具 Flink项目可以使用不同的构建工具进行构建。为了能够快速入门,Flink 为以下构建工具提供了项目模版: Maven Gradle 这些模版可以帮助你搭建项目结构并创建初始构建文件。...命令执行后,你 找到一个JAR文件,里面包含了你的应用程序,以及已作为依赖添加到应用程序的连接器和库:target/-.jar。...注意: 如果你使用其他类而不是 StreamingJob 作为应用程序的主类/入口,我们建议你相应地修改 pom.xml 文件中的 mainClass 配置。...test code dependencies { // -------------------------------------------------------------- // 编译依赖不应该包含在...命令执行后,你 找到一个 JAR 文件,里面包含了你的应用程序,以及已作为依赖添加到应用程序的连接器和库:build/libs/--all.jar

1.7K30

微服务架构之Spring Boot(八)

我们 需要将 Example.class 作为参数传递给 run 方法,告诉 SpringApplication 哪个是主要的Spring组件。还会传递 args 数组公开任何命 令行参数。...11.5创建一个可执行的Jar 我们通过创建一个完全自包含的可执行jar文件来完成我们的示例,我们可以在生产中运行它。...可执行jar(有时称为“fat jar”)是包含已编译类 以及代码需要运行的所有jar依赖的归档。...uber jar所有应用程序依赖中的所有类打包到一个存档中。这种方法的问题在于 很难看出应用程序中有哪些库。如果在多个罐子中使用相同的文件名(但具有不同的内容),也可能会有问题。...要创建可执行jar,我们需要将 spring-boot-maven-plugin 添加到 pom.xml 。

33520

Spring Boot 核心编程思想-第一部分-读书笔记「建议收藏」

xml配置 2、Spring Boot 具有一套固化的视图,该视图用于构建生产级别的应用 我的理解是通过maven 管理 Starter,Spring Boot平台依赖的第三方类库进行固化,减少管理它们的烦恼...Spring boot 的FAT Jar是一个独立的归档文件,除了包含传统的 Java Jar资源外,还有依赖JAR文件, 被java -jar 引导,内部依赖JAR 文件无法被JDK内建的jar...WarLauncher的实现原理 war 和Jar 差异很小,主要区别在于项目文件和JAR Class Path路径不同,具体可以 修改pom进行打包,然后解压进行对应差异。...总结 :Spring boot 利用 Maven依赖管理特性,进而固化其Maven依赖,固化的“Starter”依赖,简化构建 特性 ,并非Spring Boot专属,但是Spring 技术栈却将其利用的相当充分...在使用Springboot的时候,当我们 “starter”添加到应用Class path ,其关联的特性随应用启动而自动装载,这是Spring boot的亮点, 它的原理是什么呢?

80410

maven 项目依赖

什么是依赖 依赖的作用可以项目包的方式引用到当前项目中进行使用。 实际上平时引用的jar包都看可以看成是一个个子项目被引入到了项目中。...项目引用 也就是把其他的项目当成jar包放入仓库中,进行依赖的引用,就跟从网上下载jar包到本地一样。 被项目在被引用前必须先 clean install 到仓库中。...引用示例 创建一个maven项目,在 pom.xml 中添加一个项目引用,这里引用一个外部项目 junit,用它来构建测试用例,这里仅作为项目引用的示例。 <?...scope:依赖范围 doptional:标记依赖是赖可选 exclusions:用来排除传递性依赖 scope 属性: test: 测试的时候需要这个依赖编译、打包、发布这个依赖都不会被生效。...provided: 编译和测试过程中有效,最后生成war不会加入依赖,如servlet-api tomcat有带,打包就没必要了,只在测试添加就可以了。

21140

Maven系列第3篇:详解maven解决依赖问题

以往我们做一个springmvc项目,我们需要添加很多springmvc相关的jar,然后将其复制到项目的lib下面,然后添加到classpath中,期间还有可能出现jar版本冲突、jar包不全的问题,...pom中的配置信息,来加载我们项目中需要依赖jar包,还有需要如何构件项目等等信息,都可以在pom文件中进行配置。...pom文件 当我们在项目中需要用到maven帮我们解决jar依赖问题,帮我们解决项目中的编译、测试、打包、部署,项目中必须要有pom.xml文件,这些都是依靠pom的配置来完成的。...表示项目的运行环境中已经提供了所需要的构件,对于此依赖范围的maven依赖,对于编译源码、编译测试、运行测试中classpath有效,但在运行时无效。...runtime 运行时依赖范围,使用此依赖范围的maven依赖,对于编译测试、运行测试和运行项目的classpath有效,但在编译主代码无效,比如jdbc驱动实现,运行的时候才需要具体的jdbc驱动实现

1.8K30

Maven

,如果别人要用我们的项目作为依赖,那么就需要一起下载我们项目的依赖,如Lombok) 我们着重来讲解一下scope属性,它决定了依赖的作用域范围: compile :默认的依赖有效范围,在编译、运行、测试均有效...:某一个项目需要依赖于存储在本地的某个 jar 包,该 jar 包无法从任何仓库中下载的,这种依赖被称为外部依赖或本地依赖。...JUnit的engine依赖,我们可以在外部库中观察排除依赖之后和之前的效果。...Maven打包项目 我们的项目在编写完成之后,要么作为Jar依赖,供其他模型使用,要么就作为一个可以执行的程序,在控制台运行,我们只需要直接执行package命令就可以直接对项目的代码进行打包,生成jar...打包无法完成,我们也可以手动跳过,选择执行Maven目标来手动执行Maven命令,输入mvn package -Dmaven.test.skip=true 来跳过测试的方式进行打包。

63530

Maven

注意: 目录名字不可以随便改,因为maven进行编译或者jar包生成操作的时候,是根据这个目录结构来找的,你若轻易动,那 么久找不到了。...在pom.xml文件 根元素project下的 dependencies标签中,配置依赖信息,内可以包含多个 dependence元素,声明多 个依赖。...排除依赖 exclusions: 用来排除传递性依赖 其中可配置多个exclusion标签,每个exclusion标签里面对应的有groupId, artifactId, version三基本元素。...里的配置文件拷贝到项目中并做打包处理,而非resource目录下的配置文件 在打包不会添加到项目中。...war项目,必然要部署在服务器上,方式: (1)部署在远程服务器上 (2)IDEA和外部tomcat产生关联,然后项目部署在外部tomcat上 现在学习一个新的方式,不再依赖外部的tomcat,maven

2.8K40

Gradle 与 Maven

您可以在 Gradle 上找到的其他显着性能特征包括: Java 类的增量编译 Java 的编译避免 API 用于增量子任务 一个编译器守护进程,它也使编译速度更快 在管理依赖方面,Gradle 和...您只能在 Gradle 上找到的其他依赖管理功能包括: 兼容库的替换规则的使用 ReplacedBy 规则的使用 更好的元数据分辨率 能够用外部依赖动态替换项目依赖,反之亦然 Gradle 还让您在处理复合构建更加轻松...4 代码示例 在比较 Ant、Gradle 和 Maven ,Naresh Joshi 比较了在Programming Mitra 中创建编译、执行静态分析、运行单元测试和创建 JAR 文件的构建脚本所需的代码...您可以添加插件(例如 Maven CheckStyle、FindBugs 和 PMD)静态分析作为单个目标与单元测试一起执行,但您需要指定海关检查样式配置的路径确保它在错误时失败,使用如下代码:...使用 Maven,您可以轻松定义项目的元数据和依赖,但创建高度自定义的构建对于 Maven 用户来说可能是一场噩梦。

1.7K40

Java Maven POM配置参考

optional 当此项目本身是依赖依赖标记为可选。例如,假设一个项目A依赖于项目B来编译一部分可能在运行时不使用的代码,那么我们可能不需要所有项目都使用项目B。...此外,Gradle对它的解释不同,导致同一POM依赖树不同。如果打算将其限制为1.*版本,则更好的版本号要求是[1,1.9999999)。 排除 限制依赖的可传递依赖有时很有用。... 这只会从这个依赖中删除指向maven-core的路径。如果maven-core在POM的其他地方作为直接或传递依赖出现,那么它仍然可以添加到classpath径中。...通配符排除,很容易排除依赖的所有可传递依赖。...这些属性添加到POM要小心,因为这可能会影响子POM或子孙POM。 dependencies: 在POM中可以看到很多依赖,它们是所有plugins元素块下的一个元素。

43530

sbt的依赖管理逻辑

sbt 使用 Apache Ivy 作为依赖管理系统,支持 Maven 和 Ivy 依赖格式。本文将对sbt的依赖管理逻辑进行一些个人观点上概述,水平有限,还请见谅。...但是在这之前,你需要创建一个 Maven 项目,然后在 pom.xml 文件中添加 Gson 作为依赖。 <!...将会下载 Gson 库并将其添加到你的项目中。...非托管依赖是指开发人员手动管理和引入项目所需的依赖,通常是通过依赖JAR 文件放置在项目的某个目录下,或者直接引用本地文件路径来实现。...其实总的来说,sbt 的依赖的使用的这个过程涉及读取配置文件、解析依赖声明、下载依赖、解决依赖冲突等步骤,而这些步骤的唯一目的确保项目能够正确地获取和管理其所需的外部依赖

9210

Fat JAR

Fat JAR(也称为uber-JAR)是一个包含了其所有依赖的可执行Java归档文件(JAR),这意味着它不仅仅包含了你自己编写的类和资源文件,还包括了所有你的应用程序运行时所需的第三方库。...要创建一个Fat JAR,你可以使用构建工具如Maven或Gradle,它们都提供了打包所有依赖到一个JAR中的插件。...以下是一个使用Maven的简单Fat JAR入门案例: 创建一个新的Maven项目你可以手动创建一个新的Maven项目,或者使用IDE来生成,项目结构通常如下所示: my-fatjar-app ├──...编辑 pom.xml 文件在 pom.xml 文件中,你需要添加 maven-assembly-plugin 插件配置,它会指导Maven如何打包你的应用程序和它的依赖到一个Fat JAR中。...以上就是一个简单的Fat JAR入门案例。如果你使用的是Gradle,步骤将有所不同,但基本概念是相同的:你需要配置你的构建脚本以包含所有依赖,并创建一个可执行的JAR文件。

18310

走进JavaWeb技术世界12:从手动编译打包到项目构建工具Maven

这三个元素定义了一个项目基本的坐标,在Maven的世界,任何的jarpom或者jar都是以基于这些基本的坐标进行区分的。...典型的例子是Jnuit,它只有在编译测试代码及运行测试的时候才需要。 provided:已提供依赖范围。使用此依赖范围的Maven依赖,对于编译和测试classpath有效,但在运行时候无效。...使用此依赖范围的Maven依赖,对于测试和运行classpath有效,但在编译主代码无效。...Maven会解析各个直接依赖POM,将那些必要的间接依赖传递性依赖的形式引入到当前的项目中。...在解决依赖冲突方面Gradle的实现机制更加明确,两者都采用的是传递性依赖,而如果多个依赖指向同一个依赖的不同版本可能会引起依赖冲突,Maven处理起来较为繁琐,而Gradle先天具有比较明确的策略

1.2K20

走进JavaWeb技术世界12:从手动编译打包到项目构建工具Maven

这三个元素定义了一个项目基本的坐标,在Maven的世界,任何的jarpom或者jar都是以基于这些基本的坐标进行区分的。...典型的例子是Jnuit,它只有在编译测试代码及运行测试的时候才需要。 provided:已提供依赖范围。使用此依赖范围的Maven依赖,对于编译和测试classpath有效,但在运行时候无效。...使用此依赖范围的Maven依赖,对于测试和运行classpath有效,但在编译主代码无效。...Maven会解析各个直接依赖POM,将那些必要的间接依赖传递性依赖的形式引入到当前的项目中。...在解决依赖冲突方面Gradle的实现机制更加明确,两者都采用的是传递性依赖,而如果多个依赖指向同一个依赖的不同版本可能会引起依赖冲突,Maven处理起来较为繁琐,而Gradle先天具有比较明确的策略

1.1K00

Maven依赖机制

,此时Maven会使用第一声明者优先原则进行选择,第一声明者优先原则是指在POM依赖中声明顺序最靠前的那个依赖会被选择。...场景2为例,可以在B的pom.xml里C配置为可选依赖,使A依赖D的C(version:2.0)。 <!...依赖范围介绍 compile:编译依赖范围,默认使用该依赖范围,在所有classpath中都可用,并且依赖传播到依赖项目。...runtime:运行时依赖范围,只对于测试和运行classpath有效,但在编译主代码无效。 test:测试依赖范围,只对于测试的classpath有效,仅适用于测试编译和执行阶段,如junit。...import:导入依赖范围,该依赖范围不会对三种classpath产生影响,只有在部分中的pom类型依赖才支持此范围,它指示要替换为指定POM的部分中的有效依赖列表的依赖

1.5K30

项目管理Maven系列(二)- 创建项目、POM文件、依赖机制、生命周期、定制库、外部依赖

项目管理Maven系列(二) 创建项目、POM文件、依赖机制 生命周期、定制库、外部依赖 目录 1、创建Maven项目 1.1、命令行/终端创建 1.2、Eclipse创建 1.3、Java项目转Maven...3、依赖机制 4、构建生命周期 5、定制库到本地资源库 6、引用外部依赖 1、创建Maven项目 1.1、命令行/终端创建 1、在Widnows(命令行)或Mac(终端)中,本节Widnows为例...(Maven 2.1及以上) (17)package 使用已编译的代码,并将其打包成可部署格式,例如JAR。...(21)verify 运行任何检查验证包是否有效,并满足质量标准。 (22)install 将该包安装到本地资源库中,作为本地其他项目的依赖。...6、引用外部依赖 1、创建Maven项目(My_Maven_Demo5),创建lib文件夹,将要引用的外部依赖拷贝进去(例如:自定义库myjar.jar)。

2K20

Maven基本概念介绍

配置环境变量 Maven添加到系统的PATH环境变量中 测试Maven安装 使用 mvn -v 测试是否安装成功。...依赖传递机制是递归的,当一个库或框架被依赖,它的依赖也会被自动地解决和下载。 依赖范围 使用元素可以指定依赖的使用范围,这决定了Maven在构建过程中如何处理依赖。...依赖排除 •在元素中使用元素可以指定排除依赖中的某些依赖依赖排除应谨慎使用。...下面是常用的几个内置插件: maven-compiler-plugin:Java代码的编译工具 maven-jar-plugin:项目打包为JAR文件 maven-war-plugin:项目打包为WAR...多模块项目允许一个大型项目拆分为多个小型模块进行开发、管理和维护,每个子模块都可以独立编译、打包和测试。

31520

Maven项目管理

Maven 的作用 3.1 统一目结构 统一目结构:提供标准、统一的项目结构 任何编译创建 Maven 项目,其项目的结构都是一样的 3.2 项目构建 Maven 提供了标准的,跨平台(Linux...mysql-connector-java-5.1.47的包,并添加到项目中 如果是用 Maven, 我们只需要在pom.xml中引入mysql-connector-java的依赖就可以了 <dependencies...刷新完之后, 就可以在项目中看到新加入的jar依赖传递 早期我们没有是用 maven, 向项目中添加依赖jar包,需要把所有的jar包都复制到项目工程下....我们只需要在pom.xml文件中, 定义直接依赖就可以了, 由于 maven依赖具有传递性,所以会自动把所依赖的其他jar包也⼀起导入 如上图, 项目A 通过Maven 引入 Jar A ...当我们在pom.xml文件中配置完依赖之后, 点击刷新, Maven会根据坐标的配置, 去仓库里寻找 jar包, 并把他下载下来, 添加到项目中. 这个jar包下载的地方就称为仓库.

12010
领券