Skip to content

项目实战

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.java

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>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 install

10.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.jsp

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>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 install

10.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 -am

10.4 与 CI/CD 集成

Jenkins 集成

  1. 安装 Jenkins:从 Jenkins 官网 下载并安装 Jenkins
  2. 配置 Maven:在 Jenkins 中配置 Maven 安装
  3. 创建任务
    • 选择 "新建任务"
    • 输入任务名称,选择 "自由风格的软件项目"
    • 在 "源码管理" 中配置 Git 仓库
    • 在 "构建触发器" 中配置构建触发条件
    • 在 "构建" 中添加 "调用顶层 Maven 目标",输入 Maven 命令
    • 保存任务配置
  4. 运行构建:点击 "立即构建" 运行任务

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:
    - master

10.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 的使用方法,提高项目管理和构建的效率。