Maven 构建 Java 项目

简介: 使用 Maven 的 `maven-archetype-quickstart` 插件在 C:\MVN 下创建 Java 应用项目。命令行参数包括 `-DgroupId`, `-DartifactId`, `-DarchetypeArtifactId` 和 `-DinteractiveMode=false`。生成的项目包含 src 文件夹、pom.xml 及对应的 Java 源码和测试文件。App.java 是主类,AppTest.java 为测试类。按照预设结构组织代码,Maven 将自动管理构建过程。

Maven 构建 Java 项目

Maven 使用原型 archetype 插件创建项目。要创建一个简单的 Java 应用,我们将使用 maven-archetype-quickstart 插件。

在下面的例子中,我们将在 C:\MVN 文件夹下创建一个基于 maven 的 java 应用项目。

命令格式如下:

mvn archetype:generate "-DgroupId=com.companyname.bank" "-DartifactId=consumerBanking" "-DarchetypeArtifactId=maven-archetype-quickstart" "-DinteractiveMode=false"
参数说明:

-DgroupId: 组织名,公司网址的反写 + 项目名称
-DartifactId: 项目名-模块名
-DarchetypeArtifactId: 指定 ArchetypeId,maven-archetype-quickstart,创建一个简单的 Java 应用
-DinteractiveMode: 是否使用交互模式
生成的文件夹结构如下:

各个文件夹说明:

文件夹结构 描述
consumerBanking 包含 src 文件夹和 pom.xml
src/main/java contains java 代码文件在包结构下(com/companyName/bank)。
src/main/java test 测试代码文件在包结构下(com/companyName/bank)。
src/main/resources 包含了 图片 / 属性 文件(在上面的例子中,我们需要手动创建这个结构)。
在 C:\MVN\consumerBanking\src\main\java\com\companyname\bank 文件夹中,可以看到一个 App.java,代码如下:

App.java
package com.companyname.bank;

/**

Hello world!
/
public class App
{
public static void main( String[] args )
{
System.out.println( "Hello World!" );
}
}
打开 C:\MVN\consumerBanking\src\test\java\com\companyname\bank 文件夹,可以看到 Java 测试文件 AppTest.java。
AppTest.java
package com.companyname.bank;

import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;

/**

Unit test for simple App.
/
public class AppTest extends TestCase
{
/*

Create the test case

@param testName name of the test case /
public AppTest( String testName )
{
super( testName );
}

/**

@return the suite of tests being tested
*/
public static Test suite()
{
return new TestSuite( AppTest.class );
}

/**

Rigourous Test :-)
*/
public void testApp()
{
assertTrue( true );
}
}
接下来的开发过程中我们只需要按照上面表格中提到的结构放置好,其他的事情 Maven 帮我们将会搞定。

相关文章
|
6天前
|
Java 测试技术 Maven
Maven 构建生命周期
**Maven生命周期概览:** - Clean:删除编译输出,如`clean`。 - Default:验证(`validate`)、编译(`compile`)、测试(`test`)、打包(`package`)、检查(`verify`)、安装(`install`)和部署(`deploy`)。 - Site:生成项目文档与站点。 每个生命周期由阶段组成,阶段包含插件目标。如`mvn clean dependency:copy-dependencies package`,先清洁,执行特定目标,再打包。
|
5天前
|
Java Maven
Maven 自动化构建
**Maven自动化构建确保依赖稳定性。当bus-core-api(1.0-SNAPSHOT)构建后,app-web-ui和app-desktop-ui这两个依赖它的项目自动触发构建。app-web-ui与app-desktop-ui均依赖bus-core-api的1.0快照版本。**
|
4天前
|
Java 测试技术 Maven
Maven 构建生命周期
Maven的构建生命周期包括Clean(clean)、Default(validate-compile-test-package-verify-install-deploy)和Site(site-deploy-site)三个阶段。Default生命周期用于验证、编译、测试、打包、检查、安装和部署项目。插件目标如dependency:copy-dependencies可插入到指定阶段,如在clean和package之间执行。生命周期阶段顺序执行,确保项目构建与发布的标准化。
|
6天前
|
Java Apache Maven
Maven 项目文档
确保 `pom.xml` 包含 `maven-site-plugin` 和 `maven-project-info-reports-plugin`,至少版本为 3.3 和 2.7,以避免 `NoClassDefFoundError`。升级插件解决可能的版本问题。
|
7天前
|
自然语言处理 Java Maven
Maven 自动化构建
Maven自动化构建确保依赖稳定性。`bus-core-api(1.0-SNAPSHOT)`构建后,自动触发`app-web-ui`和`app-desktop-ui`的构建,两者均依赖bus-core-api的1.0快照版。 ``` 纯文本摘要: Maven自动化构建保证依赖项的稳定性:当`bus-core-api`的1.0-SNAPSHOT版本完成构建时,它会触发依赖它的`app-web-ui`和`app-desktop-ui`项目的构建,这两个项目都依赖`bus-core-api`的相同版本。
|
9天前
|
设计模式 Java 数据库连接
Java中的设计模式在实际项目中的应用
Java中的设计模式在实际项目中的应用
|
9天前
|
存储 算法 Java
Java ZGC 深度剖析及其在构建低延迟流系统中的实践心得
Java ZGC 深度剖析及其在构建低延迟流系统中的实践心得
7 0
Java ZGC 深度剖析及其在构建低延迟流系统中的实践心得
|
2天前
|
Java 测试技术 Maven
Maven 构建生命周期
Maven的构建生命周期包括Clean(clean)、Default(validate, compile, test, package, verify, install, deploy)和Site(site, deploy-site)三个阶段。Default生命周期用于常规构建,如验证、编译、测试、打包、检查、安装和部署。Clean清除编译输出,Site生成项目文档。每个阶段由插件目标组成,执行顺序由命令指定,如`mvn clean dependency:copy-dependencies package`先清洁,再复制依赖,最后打包。
|
2天前
|
Java Apache Maven
Maven 项目文档
在`C:/MVN/consumerBanking`,使用`mvn archetype:generate`命令创建Java项目,接着确保`pom.xml`包含`maven-site-plugin`和`maven-project-info-reports-plugin`,版本至少为3.3和2.7。不更新可能导致`NoClassDefFoundError`。运行`mvn site`生成文档。
|
4天前
|
Java Apache Maven
Maven 项目文档
在 `C:/MVN/consumerBanking` 中,使用 `mvn archetype:generate` 创建 Java 项目,命令含参数 `-DgroupId=com.companyname.bank -DartifactId=consumerBanking -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false`。