普通的jar包导入到maven项目中

我爱海鲸 2025-02-11 17:00:37 暂无标签

简介pom、本地导入

在项目的src同级目录下创建lib文件夹,将jar放到这个文件夹下

在pom文件上声明:

        <dependency>
            <groupId>Zero</groupId>
            <artifactId>xyz.haijin.zero</artifactId>
            <version>1.0</version>
            <scope>system</scope>
            <systemPath>${project.basedir}/src/main/resources/lib/Zero.jar</systemPath>
        </dependency>

可以参考:

https://gitee.com/liu-haijin/haijin-weblog-images  这个项目

在将文件上传到 Nexus 私服时,Extension 字段通常是指文件的扩展名(例如 jarpom 等)。对于大多数 Maven 工件(如 JAR 文件),Extension 默认是 jar,不需要额外填写。

Maven 依赖配置中使用了 <scope>system</scope> 和 <systemPath> 来引用本地的 JAR 文件(zero.jar)。这种方式在开发时可能可以正常工作,但在打包项目时,Maven 不会将 system 作用域的依赖包含到最终的构建输出中(如 JAR 或 WAR 文件)。这就是为什么你在打包后的项目中找不到 zero.jar 的原因。


问题原因

  • system 作用域的限制

    • system 作用域的依赖是直接从本地文件系统加载的,Maven 不会将其打包到构建输出中。

    • 这种方式通常不推荐使用,因为它破坏了 Maven 的依赖管理机制,且不利于项目的可移植性。


解决方法

方法 1:将 JAR 安装到本地 Maven 仓库

你可以将 zero.jar 安装到本地 Maven 仓库中,然后在项目中以标准的方式引用它。

  1. 安装 JAR 到本地仓库
    在命令行中运行以下命令:

    bash
    复制
    mvn install:install-file -Dfile=src/main/resources/lib/zero.jar -DgroupId=zero -DartifactId=xyz.haijin.zero -Dversion=1.0 -Dpackaging=jar

    这会将 zero.jar 安装到本地 Maven 仓库中。

  2. 修改依赖配置

  3. 在你的 pom.xml 中,将依赖改为:

    xml
    复制
    <dependency>
        <groupId>Zero</groupId>
        <artifactId>xyz.haijin.zero</artifactId>
        <version>1.0</version>
    </dependency>

    这样 Maven 会从本地仓库加载该依赖,并将其包含在构建输出中。


方法 2:将 JAR 放入项目的 lib 目录并修改打包配置

如果你不想将 JAR 安装到本地仓库,可以将 JAR 文件放在项目的 lib 目录中,并修改 Maven 的打包配置。

  1. 将 JAR 文件放入 lib 目录
    将 zero.jar 放到项目的 lib 目录中(例如:src/main/resources/lib/zero.jar)。

  2. 修改 pom.xml 配置
    在 pom.xml 中添加以下插件配置,确保 JAR 文件被打包到最终的构建输出中:

    xml
    复制
    <build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>lib/Zero.jar</include>
                </includes>
            </resource>
        </resources>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <version>3.3.0</version>
                <executions>
                    <execution>
                        <id>copy-dependencies</id>
                        <phase>package</phase>
                        <goals>
                            <goal>copy-dependencies</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>${project.build.directory}/lib</outputDirectory>
                            <includeScope>system</includeScope>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
  3. 修改依赖配置
    保留原来的依赖配置:

    xml
    复制
    <dependency>
        <groupId>Zero</groupId>
        <artifactId>xyz.haijin.zero</artifactId>
        <version>1.0</version>
        <scope>system</scope>
        <systemPath>${project.basedir}/src/main/resources/lib/Zero.jar</systemPath>
    </dependency>
  4. 确保 JAR 文件被打包
    在打包时,Maven 会将 zero.jar 复制到构建输出的 lib 目录中。


方法 3:使用 Maven 的 install 和 deploy 插件

如果你需要将项目部署到远程仓库,可以使用 Maven 的 install 和 deploy 插件。

  1. 安装 JAR 到本地仓库
    与方法 1 相同,使用 mvn install:install-file 将 JAR 安装到本地仓库。

  2. 部署到远程仓库
    如果你有远程 Maven 仓库(如 Nexus 或 Artifactory),可以使用以下命令将 JAR 部署到远程仓库:

    bash
    复制
    mvn deploy:deploy-file -Dfile=src/main/resources/lib/zero.jar -DgroupId=zero -DartifactId=xyz.haijin.zero -Dversion=1.0 -Dpackaging=jar -DrepositoryId=your-repo-id -Durl=http://your-repo-url
  3. 修改依赖配置
    在 pom.xml 中使用标准的依赖配置:

    xml
    复制
    <dependency>
        <groupId>zero</groupId>
        <artifactId>xyz.haijin.zero</artifactId>
        <version>1.0</version>
    </dependency>

推荐方法

  • 如果你只是本地开发,推荐使用 方法 1,将 JAR 安装到本地 Maven 仓库。

  • 如果你需要将项目分发给其他人或部署到服务器,推荐使用 方法 3,将 JAR 部署到远程仓库。

  • 如果你不想修改 Maven 仓库,可以使用 方法 2,但需要注意手动管理 JAR 文件。


总结

  • system 作用域的依赖不会被 Maven 打包到构建输出中。

  • 通过将 JAR 安装到本地或远程仓库,可以解决这个问题。

在 Maven 的 pom.xml 文件中添加私服(私有 Maven 仓库)配置,可以让你从私服下载依赖或将构建的工件(如 JAR 文件)上传到私服。以下是详细的配置步骤:


1. 添加私服仓库配置

在 pom.xml 中添加 <repositories> 和 <distributionManagement> 配置。

示例配置

xml
复制
<project>
    <!-- 其他配置 -->

    <!-- 配置私服作为仓库 -->
    <repositories>
        <repository>
            <id>your-repo-id</id> <!-- 仓库的唯一标识 -->
            <url>http://your-repo-url/repository/maven-public/</url> <!-- 私服的 URL -->
            <releases>
                <enabled>true</enabled> <!-- 允许下载 releases 版本的依赖 -->
            </releases>
            <snapshots>
                <enabled>true</enabled> <!-- 允许下载 snapshots 版本的依赖 -->
            </snapshots>
        </repository>
    </repositories>

    <!-- 配置私服作为发布仓库 -->
    <distributionManagement>
        <repository>
            <id>your-repo-id</id> <!-- 仓库的唯一标识 -->
            <url>http://your-repo-url/repository/maven-releases/</url> <!-- 发布 releases 版本的 URL -->
        </repository>
        <snapshotRepository>
            <id>your-repo-id</id> <!-- 仓库的唯一标识 -->
            <url>http://your-repo-url/repository/maven-snapshots/</url> <!-- 发布 snapshots 版本的 URL -->
        </snapshotRepository>
    </distributionManagement>

    <!-- 其他配置 -->
</project>

2. 配置私服的认证信息

私服通常需要用户名和密码进行认证。你需要在 Maven 的 settings.xml 文件中配置认证信息。

settings.xml 配置

  1. 找到 Maven 的 settings.xml 文件,通常位于:

    • Linux/Mac: ~/.m2/settings.xml

    • Windows: C:\Users\<你的用户名>\.m2\settings.xml

  2. 在 <servers> 中添加私服的认证信息:

    xml
    复制
    <settings>
        <servers>
            <server>
                <id>your-repo-id</id> <!-- 与 pom.xml 中的仓库 ID 一致 -->
                <username>your-username</username> <!-- 私服的用户名 -->
                <password>your-password</password> <!-- 私服的密码 -->
            </server>
        </servers>
    </settings>

3. 将依赖或工件上传到私服

如果你需要将本地的 JAR 文件(如 zero.jar)上传到私服,可以使用 Maven 的 deploy:deploy-file 命令。

上传 JAR 到私服

bash
复制
mvn deploy:deploy-file \
    -DgroupId=zero \ -DartifactId=xyz.haijin \ -Dversion=1.0 \ -Dpackaging=jar \ -Dfile=src/main/resources/lib/zero.jar \ -DrepositoryId=your-repo-id \ -Durl=http://your-repo-url/repository/maven-releases/

参数说明

  • -DgroupId:组 ID。

  • -DartifactId:工件 ID。

  • -Dversion:版本号。

  • -Dpackaging:打包类型(如 jar)。

  • -Dfile:本地 JAR 文件的路径。

  • -DrepositoryId:私服的 ID(与 settings.xml 中的 <server> ID 一致)。

  • -Durl:私服的 URL。


4. 从私服下载依赖

在 pom.xml 中配置好私服后,Maven 会自动从私服下载依赖。例如:

xml
复制
<dependency>
    <groupId>zero</groupId>
    <artifactId>xyz.haijin.zero</artifactId>
    <version>1.0</version>
</dependency>

5. 部署项目到私服

如果你希望将整个项目构建的工件(如 JAR 或 WAR 文件)发布到私服,可以使用以下命令:

bash
复制
mvn clean deploy

Maven 会根据 pom.xml 中的 <distributionManagement> 配置,将构建的工件上传到私服。


6. 私服常见配置示例

以下是常见的私服配置示例:

Nexus 私服

  • Releases 仓库 URL: http://your-repo-url/repository/maven-releases/

  • Snapshots 仓库 URL: http://your-repo-url/repository/maven-snapshots/

  • Public 仓库 URL: http://your-repo-url/repository/maven-public/

Artifactory 私服

  • Releases 仓库 URL: http://your-repo-url/artifactory/libs-release-local/

  • Snapshots 仓库 URL: http://your-repo-url/artifactory/libs-snapshot-local/

  • Public 仓库 URL: http://your-repo-url/artifactory/libs-release/


总结

  1. 在 pom.xml 中配置 <repositories> 和 <distributionManagement>

  2. 在 settings.xml 中配置私服的认证信息。

  3. 使用 mvn deploy:deploy-file 上传本地 JAR 文件到私服。

  4. 使用 mvn clean deploy 将项目构建的工件发布到私服。

你好:我的2025