当前位置: 首页 > news >正文

Maven 使用教程(二)

一、如何创建JAR并将其安装在本地存储库中?

制作JAR文件非常简单,可以通过执行以下命令来完成:

mvn package

现在可以查看${project.basedir}/target目录,您将看到生成的JAR文件。
现在,您需要将生成的工件(JAR文件)安装在本地存储库中(${user.home}/.m2/repository是默认位置)。有关存储库的更多信息,您可以参考我们的存储库简介,但让我们继续安装我们的工件!为此,请执行以下命令:

mvn install

执行此命令时,您应该看到以下输出:

[INFO] Scanning for projects...
[INFO]
[INFO] ----------------------< com.mycompany.app:my-app >----------------------
[INFO] Building my-app 1.0-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-resources-plugin:3.0.2:resources (default-resources) @ my-app ---
...
[INFO] --- maven-compiler-plugin:3.8.0:compile (default-compile) @ my-app ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- maven-resources-plugin:3.0.2:testResources (default-testResources) @ my-app ---
...
[INFO] --- maven-compiler-plugin:3.8.0:testCompile (default-testCompile) @ my-app ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- maven-surefire-plugin:2.22.1:test (default-test) @ my-app ---
[INFO]
[INFO] -------------------------------------------------------
[INFO]  T E S T S
[INFO] -------------------------------------------------------
[INFO] Running com.mycompany.app.AppTest
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.025 s - in com.mycompany.app.AppTest
[INFO]
[INFO] Results:
[INFO]
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
[INFO]
[INFO]
[INFO] --- maven-jar-plugin:3.0.2:jar (default-jar) @ my-app ---
[INFO] Building jar: <dir>/my-app/target/my-app-1.0-SNAPSHOT.jar
[INFO]
[INFO] --- maven-install-plugin:2.5.2:install (default-install) @ my-app ---
[INFO] Installing <dir>/my-app/target/my-app-1.0-SNAPSHOT.jar to <local-repository>/com/mycompany/app/my-app/1.0-SNAPSHOT/my-app-1.0-SNAPSHOT.jar
[INFO] Installing <dir>/my-app/pom.xml to <local-repository>/com/mycompany/app/my-app/1.0-SNAPSHOT/my-app-1.0-SNAPSHOT.pom
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  1.678 s
[INFO] Finished at: 2020-07-12T12:04:45+01:00
[INFO] ------------------------------------------------------------------------

请注意,surefire插件(执行测试)查找包含在具有特定命名约定的文件中的测试。默认情况下,包括的测试包括:

  • **/*Test.java
  • **/Test*.java
  • **/*TestCase.java

默认排除为:

  • **/Abstract*Test.java
  • **/Abstract*TestCase.java

您已经完成了设置、构建、测试、打包和安装典型Maven项目的过程。这很可能是项目使用Maven所做的绝大多数工作,如果您注意到了,到目前为止您所能做的一切都是由18行文件驱动的,即项目的模型或POM。如果您查看一个典型的Ant构建文件,该文件提供了我们迄今为止实现的相同功能,您会注意到它已经是POM的两倍,我们才刚刚开始!您可以从Maven获得更多的功能,而不需要像目前那样对POM进行任何添加。为了从示例Ant构建文件中获得更多功能,您必须不断添加容易出错的内容。

那么你还能免费得到什么呢?有许多Maven插件可以开箱即用,即使是像我们上面这样的简单POM。我们将在这里特别提到一个,因为它是Maven的一个非常宝贵的功能:在您的部分没有任何工作的情况下,这个POM有足够的信息来为您的项目生成一个网站!您很可能希望自定义Maven站点,但如果时间紧迫,则需要执行以下命令来提供有关项目的基本信息:

mvn site

 还有许多其他独立的目标也可以执行,例如:

mvn clean

这将在启动之前删除包含所有生成数据的目标目录,以便它是新的。

二、什么是快照(SNAPSHOT)版本?

请注意,下面所示的pom.xml文件中版本标记的值具有后缀:-SNAPSHOT。

<project xmlns="http://maven.apache.org/POM/4.0.0"...<groupId>...</groupId><artifactId>my-app</artifactId>...<version>1.0-SNAPSHOT</version><name>Maven Quick Start Archetype</name>...

SNAPSHOT值是指开发分支上的“最新”代码,并不能保证代码是稳定的或不变的。相反,“release”版本中的代码(没有后缀SNAPSHOT的任何版本值)是不变的。
换句话说,SNAPSHOT版本是最终“发布”版本之前的“开发”版本。SNAPSHOT比其版本“旧”。
在发布过程中,x.y-SNAPSHOT的版本更改为x.y.发布过程还将开发版本增加到x.(y+1)-SNAPSHOT。例如,版本1.0-SNAPSHAT作为版本1.0发布,新的开发版本为版本1.1-SNAPSHOT。

三、如何使用插件?

每当您想要为Maven项目定制构建时,可以通过添加或重新配置插件来完成。
对于这个例子,我们将配置Java编译器以允许JDK5.0源代码。这就像将其添加到POM一样简单:

...
<build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.3</version><configuration><source>1.5</source><target>1.5</target></configuration></plugin></plugins>
</build>
...

您会注意到Maven中的所有插件都很像一个依赖项——在某些方面,它们也是。该插件将自动下载和使用-如果您请求,则包括特定版本(默认为使用最新的可用版本)。

配置元素将给定的参数应用于编译器插件的每个目标。在上述情况下,编译器插件已经用作构建过程的一部分,这只是更改配置。还可以向流程添加新目标,并配置特定目标。

要了解插件的可用配置,您可以查看插件列表,并导航到您正在使用的插件和目标。有关如何配置插件的可用参数的一般信息,请参阅《配置插件指南》。

四、如何将资源添加到JAR?

五、如何筛选资源文件?

六、如何使用外部依赖项?

http://www.lryc.cn/news/192565.html

相关文章:

  • [Swift]同一个工程管理多个Target
  • DevExpress Reporting中文教程 - 如何在macOS等系统中生成导出报表文档
  • 1967作为子字符串出现在单词中的字符串数目
  • CocosCreator 面试题(二)JavaScript中的prototype的理解
  • python:从Excel或者CSV中读取因变量与多个自变量,用于训练机器学习回归模型,并输出预测结果
  • pycharm连接gitlab
  • 【C/C++数据结构 - 2】:稳定性与优化揭秘,揭开插入排序、希尔排序和快速排序的神秘面纱!
  • PCL点云处理之基于强度特征的SIFT关键点提取法 (二百一十五)
  • uniapp打包配置
  • 人大金仓分析型数据库最大量限制
  • centos 里面的service自启动app.jar,出现两个java进程,app是同一个端口
  • 【算法|双指针系列No.7】leetcodeLCR 007. 三数之和
  • ubuntu修改IP地址
  • java springboot 通过ConfigurationProperties给第三方bean注入属性
  • windows系统安装openssl并且转换证书格式
  • 【GO】基础速成
  • 五子棋(C语言实现)
  • thymeleaf,bootstrap-fileinput 多文件上传
  • 爬虫 | 基础模块了解
  • CSS复习笔记
  • 编译linux的设备树
  • ⛳ MyBatis 中 Mapper 接口工作原理实例解析
  • Android 音频可视化
  • 刷机与救砖避坑指南
  • 软件建模知识点
  • WSL 配置 Linux
  • VS Code:CMake配置
  • Flex 词法分析实验实现(电子科技大学编译技术Icoding实验)
  • 设计模式——20. 解释器模式
  • 多输入多输出 | MATLAB实现CNN-BiLSTM-Attention卷积神经网络-双向长短期记忆网络结合SE注意力机制的多输入多输出预测