Appearance
项目实战
10.1 普通 Java 项目
创建普通 Java 项目
使用 Maven 命令创建一个普通 Java 项目:
bash
mvn archetype:generate -DgroupId=com.example -DartifactId=my-java-project -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false项目结构
my-java-project/
├── pom.xml
└── src/
├── main/
│ └── java/
│ └── com/
│ └── example/
│ └── App.java
└── test/
└── java/
└── com/
└── example/
└── AppTest.javaPOM 配置
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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>my-java-project</artifactId>
<version>1.0.0</version>
<packaging>jar</packaging>
<name>my-java-project</name>
<description>A sample Java project</description>
<properties>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>构建项目
bash
# 编译项目
mvn compile
# 运行测试
mvn test
# 打包项目
mvn package
# 安装到本地仓库
mvn install10.2 Web 项目
创建 Web 项目
使用 Maven 命令创建一个 Web 项目:
bash
mvn archetype:generate -DgroupId=com.example -DarchetypeArtifactId=maven-archetype-webapp -DartifactId=my-webapp -DinteractiveMode=false项目结构
my-webapp/
├── pom.xml
└── src/
└── main/
├── resources/
└── webapp/
├── WEB-INF/
│ └── web.xml
└── index.jspPOM 配置
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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>my-webapp</artifactId>
<version>1.0.0</version>
<packaging>war</packaging>
<name>my-webapp</name>
<description>A sample Web application</description>
<properties>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<finalName>my-webapp</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.3.1</version>
</plugin>
</plugins>
</build>
</project>构建项目
bash
# 编译项目
mvn compile
# 打包项目
mvn package
# 安装到本地仓库
mvn install10.3 多模块企业级项目
项目结构
enterprise-project/
├── pom.xml # 父 POM
├── enterprise-common/ # 公共模块
├── enterprise-service/ # 服务模块
├── enterprise-dao/ # 数据访问模块
└── enterprise-web/ # Web 模块父 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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>enterprise-project</artifactId>
<version>1.0.0</version>
<packaging>pom</packaging>
<name>Enterprise Project</name>
<description>Enterprise-level multi-module project</description>
<modules>
<module>enterprise-common</module>
<module>enterprise-dao</module>
<module>enterprise-service</module>
<module>enterprise-web</module>
</modules>
<properties>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<spring.version>5.3.20</spring.version>
</properties>
<dependencyManagement>
<dependencies>
<!-- Spring 依赖 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
<!-- 其他依赖 -->
</dependencies>
</dependencyManagement>
</project>构建项目
bash
# 构建整个项目
mvn clean install
# 构建单个模块
mvn clean install -pl enterprise-web -am10.4 与 CI/CD 集成
Jenkins 集成
- 安装 Jenkins:从 Jenkins 官网 下载并安装 Jenkins
- 配置 Maven:在 Jenkins 中配置 Maven 安装
- 创建任务:
- 选择 "新建任务"
- 输入任务名称,选择 "自由风格的软件项目"
- 在 "源码管理" 中配置 Git 仓库
- 在 "构建触发器" 中配置构建触发条件
- 在 "构建" 中添加 "调用顶层 Maven 目标",输入 Maven 命令
- 保存任务配置
- 运行构建:点击 "立即构建" 运行任务
GitLab CI 集成
在项目根目录创建 .gitlab-ci.yml 文件:
yaml
image: maven:3.8.5-openjdk-11
stages:
- build
- test
- deploy
build:
stage: build
script:
- mvn clean compile
test:
stage: test
script:
- mvn test
deploy:
stage: deploy
script:
- mvn package
artifacts:
paths:
- target/*.jar
only:
- master10.5 Docker 集成
创建 Dockerfile
在项目根目录创建 Dockerfile 文件:
dockerfile
FROM openjdk:11-jre-slim
WORKDIR /app
COPY target/my-java-project-1.0.0.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "app.jar"]构建 Docker 镜像
bash
# 先构建 Maven 项目
mvn clean package
# 构建 Docker 镜像
docker build -t my-java-project .
# 运行 Docker 容器
docker run -p 8080:8080 my-java-project使用 Docker Compose
创建 docker-compose.yml 文件:
yaml
version: '3'
services:
app:
build: .
ports:
- "8080:8080"
depends_on:
- db
db:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: mydb
ports:
- "3306:3306"运行 Docker Compose:
bash
docker-compose up -d通过实际项目实战,您可以更好地理解和掌握 Maven 的使用方法,提高项目管理和构建的效率。