• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

奋斗的软件工程师

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

Maven 项目管理:附录与注释详解

好的,以下是附录部分的完整内容,并附上详细的注释说明:


附一:完整的 pom.xml 配置

<?xml version="1.0" encoding="UTF-8"?>
<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> <!-- Maven 模型的版本 -->

    <groupId>com.ithero</groupId> <!-- 项目的组织 ID -->
    <artifactId>maven-usermanager</artifactId> <!-- 项目的唯一标识 -->
    <version>1.0-SNAPSHOT</version> <!-- 项目的版本号 -->
    <packaging>war</packaging> <!-- 项目的打包方式,这里是 war 包 -->

    <!-- 依赖版本统一管理 -->
    <properties>
        <junit.version>4.13</junit.version> <!-- JUnit 版本 -->
        <druid.version>1.2.18</druid.version> <!-- 指定 Druid 版本 -->
        <servlet.version>3.0.1</servlet.version> <!-- Servlet API 版本 -->
        <jsp.version>2.3.3</jsp.version> <!-- JSP API 版本 -->
        <beanutils.version>1.8.3</beanutils.version> <!-- BeanUtils 版本 -->
        <commons.logging.version>1.1.1</commons.logging.version> <!-- Commons Logging 版本 -->
        <jstl.version>1.2</jstl.version> <!-- JSTL 版本 -->
        <log4j.version>1.2.17</log4j.version> <!-- Log4j 版本 -->
        <mabatis.version>3.5.0</mabatis.version> <!-- MyBatis 版本 -->
        <mysql.version>5.1.49</mysql.version> <!-- MySQL 驱动版本 -->
    </properties>

    <!-- 依赖管理 -->
    <dependencies>
        <!-- JUnit 依赖 -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>${junit.version}</version> <!-- 使用 properties 中定义的版本 -->
            <scope>test</scope> <!-- 作用范围:仅测试时需要 -->
        </dependency>

        <!-- Druid 依赖 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>${druid.version}</version> <!-- 使用 properties 中定义的版本 -->
        </dependency>

        <!-- Servlet API 依赖 -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>${servlet.version}</version>
            <scope>provided</scope> <!-- 作用范围:编译和测试时需要,运行时由容器提供 -->
        </dependency>

        <!-- JSP API 依赖 -->
        <dependency>
            <groupId>javax.servlet.jsp</groupId>
            <artifactId>javax.servlet.jsp-api</artifactId>
            <version>${jsp.version}</version>
            <scope>provided</scope>
        </dependency>

        <!-- BeanUtils 依赖 -->
        <dependency>
            <groupId>commons-beanutils</groupId>
            <artifactId>commons-beanutils</artifactId>
            <version>${beanutils.version}</version>
        </dependency>

        <!-- Commons Logging 依赖 -->
        <dependency>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
            <version>${commons.logging.version}</version>
        </dependency>

        <!-- JSTL 依赖 -->
        <dependency>
            <groupId>jstl</groupId>
            <artifactId>jstl</artifactId>
            <version>${jstl.version}</version>
        </dependency>

        <!-- Log4j 依赖 -->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>${log4j.version}</version>
        </dependency>

        <!-- MyBatis 依赖 -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>${mabatis.version}</version>
        </dependency>

        <!-- MySQL 驱动依赖 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>${mysql.version}</version>
            <scope>runtime</scope> <!-- 作用范围:运行时需要,编译时不需要 -->
        </dependency>

        <!-- FastJSON 依赖 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.47</version>
        </dependency>
    </dependencies>

    <!-- 插件管理 -->
    <build>
        <plugins>
            <!-- JDK 编译插件 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>1.8</source> <!-- 源代码编译版本 -->
                    <target>1.8</target> <!-- 目标代码编译版本 -->
                    <encoding>UTF-8</encoding> <!-- 编码格式 -->
                </configuration>
            </plugin>

            <!-- Tomcat 插件 -->
            <plugin>
                <groupId>org.apache.tomcat.maven</groupId>
                <artifactId>tomcat7-maven-plugin</artifactId>
                <version>2.2</version>
                <configuration>
                    <port>80</port> <!-- Tomcat 运行端口 -->
                    <path>/</path> <!-- 项目访问路径 -->
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

附二:清理 Maven 仓库

在 Maven 项目中,如果依赖下载不完整,可能会生成以 lastUpdated 结尾的文件。这些文件会导致 Maven 无法重新下载依赖,需要手动清理。

  • 这是 Windows 批处理脚本(Batch Script),用于在 Windows 操作系统上执行一系列命令。批处理脚本通常以 .bat 或 .cmd 为扩展名,可以直接在命令提示符(Command Prompt)或 PowerShell 中运行。

    set REPOSITORY_PATH=D:\DevTools\Apache\Maven\apache-maven-3.6.0\maven_repository
    rem 正在搜索...
    for /f "delims=" %%i in ('dir /b /s "%REPOSITORY_PATH%\*lastUpdated*"') do (
        del /s /q %%i
    )
    rem 搜索完毕
    pause
    

    脚本功能解析

    set REPOSITORY_PATH=D:\DevTools\Apache\Maven\apache-maven-3.6.0\maven_repository
    
    • set:设置一个环境变量。
    • REPOSITORY_PATH:变量名,表示 Maven 本地仓库的路径。
    • D:\DevTools\Apache\Maven\apache-maven-3.6.0\maven_repository:变量值,表示 Maven 本地仓库的实际路径。
    rem 正在搜索...
    
    • rem:注释命令,用于在脚本中添加注释,解释代码的功能。
    for /f "delims=" %%i in ('dir /b /s "%REPOSITORY_PATH%\*lastUpdated*"') do (
        del /s /q %%i
    )
    
    • for /f "delims=" %%i in (...) do (...):循环命令,用于遍历指定目录下的文件。
      • /f:表示处理文件。
      • delims=:表示不分割文件名。
      • %%i:循环变量,表示当前文件的路径。
      • dir /b /s "%REPOSITORY_PATH%\*lastUpdated*":递归查找指定目录下所有以 lastUpdated 结尾的文件。
        • /b:以简洁模式显示文件名(仅文件名)。
        • /s:递归搜索子目录。
        • "%REPOSITORY_PATH%\*lastUpdated*":搜索路径和文件名模式。
      • del /s /q %%i:删除找到的文件。
        • /s:递归删除子目录中的文件。
        • /q:静默模式,不提示确认删除。
    rem 搜索完毕
    
    • rem:注释命令,表示搜索操作已完成。
    pause
    
    • pause:暂停脚本执行,等待用户按任意键继续。通常用于在脚本执行完毕后,防止命令提示符窗口立即关闭。

    脚本功能总结

    这个批处理脚本的主要功能是:

    1. 设置 Maven 本地仓库的路径。
    2. 递归搜索本地仓库中所有以 lastUpdated 结尾的文件。
    3. 删除这些文件。
    4. 暂停脚本执行,等待用户操作。

    适用场景

    在 Maven 项目中,如果依赖下载不完整,可能会生成以 lastUpdated 结尾的文件。这些文件会导致 Maven 无法重新下载依赖,因此需要手动清理。这个脚本可以帮助开发者快速清理 Maven 本地仓库中的残留文件。


附三:更新依赖索引

在 IDEA 中配置完 Maven 仓库后,可能需要手动更新依赖索引,以确保 IDEA 能够正确识别仓库中的 Jar 包。

操作步骤:

  1. 打开 IDEA 设置。
  2. 搜索 Maven -> Repositories。
  3. 选择本地仓库,点击 Update。

附四:JDK 插件配置

在 Maven 项目中,可以通过配置 JDK 插件来指定编译版本。

配置示例:

<build>
    <plugins>
        <!-- JDK 编译插件 -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.8.1</version>
            <configuration>
                <source>1.8</source> <!-- 源代码编译版本 -->
                <target>1.8</target> <!-- 目标代码编译版本 -->
            </configuration>
        </plugin>
    </plugins>
</build>

说明:

  • source:指定源代码的编译版本。
  • target:指定生成的字节码的版本。

附五:配置 IDEA 模板

在 IDEA 中,可以通过配置模板来快速生成代码。

操作步骤:

  1. 打开 IDEA 设置。
  2. 搜索 File and Code Templates。
  3. 选择模板类型(如 Class),添加自定义模板。

附六:优先使用本地仓库

在某些情况下,Maven 可能会优先从远程仓库下载依赖,而不是使用本地仓库。可以通过以下配置解决此问题。

配置方法:

在命令行中添加参数:

-DarchetypeCatalog=internal

说明:

  • -DarchetypeCatalog=internal:指定 Maven 优先使用本地仓库中的 archetype 信息。

以上是附录部分的完整内容,并附上了详细的注释说明。希望这些内容能够帮助你更好地理解和使用 Maven!

posted on 2024-12-17 23:32  周政然  阅读(83)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3