目录
Maven 构建 Java 项目
解释一下这段代码,为什么可以构建一个目录清晰的maven项目“mvn archetype:generate "-DgroupId=com.companyname.bank" "-DartifactId=consumerBanking" "-DarchetypeArtifactId=maven-archetype-quickstart" "-DinteractiveMode=false"”
Maven构建&项目测试
我们不是已经构建了一个maven项目了吗?为什么还要使用mvn clean package构建项目呢?
Util.java
App.java
Maven 引入外部依赖
maven里面直接添加本地依赖是什么意思?
Maven 构建 Java 项目
大家实现这个的时候,
mvn archetype:generate "-DgroupId=com.companyname.bank" "-DartifactId=consumerBanking" "-DarchetypeArtifactId=maven-archetype-quickstart" "-DinteractiveMode=false"
记得一定要去
D:\java\Maven\apache-maven-3.8.8\conf\settings.xml
去添加一下阿里或者腾讯的镜像
要不然构建的速度会很慢,
settings.xml,我现在学到的认知,就是认为这个“setting.xml”文件是一个很核心的文件,就像是计算机的cpu,但是它不涉及计算,就是发出指令的地方,你可以在这里面修改自己的策略
其实我认为这也是一个bug,maven虽然看起来管理配置信息,在一个地方可以写全部,而且它需要放在什么位置,也被maven自己管理了,但是,每次一打开,它就要导入maven的各种库和配置,如果要导入的东西很多,那么一打卡,就要等上老半天,也是很让人不爽的,还是需要再改进。
您提到的是maven的一个性能问题,确实在一些情况下会导致不便。不过,需要注意的是,maven并不是一个完美无缺的工具,它只是一个辅助开发的工具,可以帮助我们管理依赖、构建项目、发布和部署等操作,但并不是所有情况下都是最优的选择。
当然,对于您提到的问题,maven社区也有在持续改进和优化,比如在maven 3.x版本中,优化了依赖库的解析速度,同时还提供了本地仓库和远程仓库镜像的功能,可以有效地提高maven的构建速度和稳定性。同时,我们也可以在构建项目的时候通过配置来避免一些不必要的依赖库的下载和导入,从而提高构建效率。
总之,虽然maven在某些情况下可能存在一些性能问题,但我们可以通过一些方法和手段来规避这些问题,同时也需要注意合理使用maven工具,在实际开发过程中尽可能避免不必要的操作和依赖。
解释一下这段代码,为什么可以构建一个目录清晰的maven项目“mvn archetype:generate "-DgroupId=com.companyname.bank" "-DartifactId=consumerBanking" "-DarchetypeArtifactId=maven-archetype-quickstart" "-DinteractiveMode=false"”
这段代码是用于构建一个目录清晰的Maven项目的命令,它使用了Maven的内置命令“archetype:generate”。具体来说,该命令使用指定的参数来生成一个新的Maven项目,这些参数包括:
- -DgroupId:指定项目的groupId,通常是公司或组织的唯一标识符,比如“com.companyname.bank”;
- -DartifactId:指定项目的artifactId,通常是项目的名称,比如“consumerBanking”;
- -DarchetypeArtifactId:指定Maven Archetype的artifactId,该Archetype将用于生成项目的骨架,比如“maven-archetype-quickstart”;
- -DinteractiveMode=false:禁用交互模式,使得Maven在运行期间不需要用户输入任何信息。
通过运行这个命令,Maven将会下载指定的Archetype,并生成一个新的Maven项目,该项目将包含一个清晰的目录结构,符合Maven的标准。这个目录结构包括src/main/java用于存放Java源代码、src/main/resources用于存放应用程序资源、src/test/java用于存放测试源代码等目录。这种结构有助于项目的组织、管理和维护。
好的地方总是觉得还不够好,坏的地方连声音都听不到。
IDEA 创建 MAVEN 项目卡在 Generating project in Batch mode。是 MAVEN 一直在请求:
http://repo1.maven.org/maven2/archetype-catalog.xml
这个项目目录的 xml 文件,由于墙的问题,加载缓慢,等待时间十分漫长。
解决方法:修改 setting.xml 文件,把 mirror 改成阿里的镜像。
1、打开 maven 目录下的 conf/setting.xml,注意要是 idea 使用的 maven。
2、搜索 <mirrors>;找到 <mirrors>。在 <mirrors> 节点下添加。
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
3、运行 MVN 命令的时候加上 -DarchetypeCatalog=local 这个参数。在 IDEA 中:
这点很重要
-DarchetypeCatalog=local
Maven构建&项目测试
在上一章节中我们学会了如何使用 Maven 创建 Java 应用。接下来我们要学习如何构建和测试这个项目。
进入 C:/MVN 文件夹下,打开 consumerBanking 文件夹。你将看到有一个 pom.xml 文件,代码如下:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.companyname.bank</groupId>
<artifactId>consumerBanking</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>consumerBanking</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
<groupId>junit</groupId>就是这一句
从以上 xml代码中,可知 Maven 已经添加了 JUnit 作为测试框架。
默认情况下 Maven 添加了一个源码文件 C:\MVN\consumerBanking\src\main\java\com\companyname\bank\App.java 和一个测试文件 C:\MVN\consumerBanking\src\test\java\com\companyname\bank\AppTest.java。
打开命令控制台,跳转到 C:\MVN\consumerBanking 目录下,并执行以下 mvn 命令开始构建项目:
我们不是已经构建了一个maven项目了吗?为什么还要使用mvn clean package构建项目呢?
在maven项目中,mvn clean package
命令是常用的构建命令,它将执行一系列的构建操作,包括清除旧的构建输出(clean
),编译代码,运行测试,生成应用程序包(package
)等等。因此,即使已经构建了一个maven项目,如果需要重新构建项目,或者更新项目依赖项等,仍然需要使用mvn clean package
来重新构建项目。此外,mvn clean package
也是在CI/CD自动化流程中常用的构建命令。
执行完后,我们已经构建了自己的项目并创建了最终的 jar 文件,下面是要学习的关键概念:
- 我们给了 maven 两个目标,首先清理目标目录(clean),然后打包项目构建的输出为 jar(package)文件。
- 打包好的 jar 文件可以在 consumerBanking\target 中获得,名称为 consumerBanking-1.0-SNAPSHOT.jar。
- 测试报告存放在 consumerBanking\target\surefire-reports 文件夹中。
- Maven 编译源码文件,以及测试源码文件。
- 接着 Maven 运行测试用例。
- 最后 Maven 创建项目包。
C:\MVN\consumerBanking\target\classes>java com.companyname.bank.App
你可以看到结果:
Hello World!
添加 Java 源文件
接下来我们看看如何添加其他的 Java 文件到项目中。打开 C:\MVN\consumerBanking\src\main\java\com\companyname\bank 文件夹,在其中创建 Util 类 Util.java。
Util.java
package com.companyname.bank;
public class Util
{
public static void printMessage(String message){
System.out.println(message);
}
}
更新 App 类来使用 Util 类:
App.java
package com.companyname.bank;
/**
* Hello world!
*
*/
public class App
{
public static void main( String[] args )
{
Util.printMessage("Hello World!");
}
}
现在打开命令控制台,跳转到 C:\MVN\consumerBanking 目录下,并执行下面的 mvn 命令。
C:\MVN\consumerBanking>mvn clean compile
在 Maven 构建成功之后,跳转到 C:\MVN\consumerBanking\target\classes 目录下,并执行下面的 java 命令。
C:\MVN\consumerBanking\target\classes>java -cp . com.companyname.bank.App
Hello World!
Maven 引入外部依赖
如果我们需要引入第三方库文件到项目,该怎么操作呢?
pom.xml 的 dependencies 列表列出了我们的项目需要构建的所有外部依赖项。
要添加依赖项,我们一般是先在 src 文件夹下添加 lib 文件夹,然后将你工程需要的 jar 文件复制到 lib 文件夹下。我们使用的是 ldapjdk.jar ,它是为 LDAP 操作的一个帮助库:
<dependencies>
<!-- 在这里添加你的依赖 -->
<dependency>
<groupId>ldapjdk</groupId> <!-- 库名称,也可以自定义 -->
<artifactId>ldapjdk</artifactId> <!--库名称,也可以自定义-->
<version>1.0</version> <!--版本号-->
<scope>system</scope> <!--作用域-->
<systemPath>${basedir}\src\lib\ldapjdk.jar</systemPath> <!--项目根目录下的lib文件夹下-->
</dependency>
</dependencies>
pom.xml 文件完整代码如下:
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.companyname.bank</groupId>
<artifactId>consumerBanking</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>consumerBanking</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>ldapjdk</groupId>
<artifactId>ldapjdk</artifactId>
<scope>system</scope>
<version>1.0</version>
<systemPath>${basedir}\src\lib\ldapjdk.jar</systemPath>
</dependency>
</dependencies>
</project>
添加之后,记得点击那个小标识,把maven真正导入进来
maven里面直接添加本地依赖是什么意思?
在 Maven 项目中添加本地依赖,意味着你可以通过指定本地 JAR 文件的路径来将其作为 Maven 依赖项引入到项目中。这是一种方便的方法,可以让你在没有公共 Maven 存储库的情况下使用特定的依赖项。
在 Maven 中添加本地依赖项有两种方法。一种方法是手动将 JAR 文件复制到项目的 lib
目录中,并在 Maven pom.xml
文件中将依赖项定义为本地路径。例如:
<dependency>
<groupId>com.example</groupId>
<artifactId>example-lib</artifactId>
<version>1.0</version>
<scope>system</scope>
<systemPath>${project.basedir}/lib/example-lib.jar</systemPath>
</dependency>
另一种方法是使用 Maven 的 install:install-file
目标将 JAR 文件安装到本地 Maven 存储库中。例如:
mvn install:install-file -Dfile=path/to/example-lib.jar -DgroupId=com.example -DartifactId=example-lib -Dversion=1.0 -Dpackaging=jar
然后在 pom.xml
文件中引入这个依赖项:
<dependency>
<groupId>com.example</groupId>
<artifactId>example-lib</artifactId>
<version>1.0</version>
</dependency>
无论哪种方法,本地依赖项的主要优点是方便快捷,同时还可以避免从公共 Maven 存储库中下载大型依赖项。但是,应该注意的是,这种方法可能会导致构建过程中的不一致,因为你可能会在不同的计算机上使用不同的依赖项版本或配置。因此,最好只在必要的情况下使用本地依赖项。