将Maven本地.jar导入为lib

时间:2018-04-05 19:06:48

标签: java maven

我为我的课做了一个简单的Maven项目。根据教师教程,由于一些服务器问题,我们无法将其上传到我们的学校仓库,因此我们必须使用altDeploymentRepository在本地存储它。我有以下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>

    <groupId>com.dpp</groupId>
    <artifactId>simple_lib</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>1.6</maven.compiler.source>
        <maven.compiler.target>1.6</maven.compiler.target>
    </properties>

    <build>
        <plugins>
            <plugin>
                <artifactId>maven-deploy-plugin</artifactId>
                <version>2.8.2</version>
                <configuration>
                    <altDeploymentRepository>internal.repo::default::file://${project.basedir}/../${project.name}-mvn-repo</altDeploymentRepository>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

所以在我的Maven项目目录中,我有两个目录:

sample_lib
sample_lib-mvn-repo

在第二个,内心深处:sample_lib-mvn-repo\com\dpp\sample_lib\1.0-SNAPSHOT我有一个.jar文件,我想导入(但不使用.jar文件,如传递路径到它 - 我需要这样做“Maven方式“,将其导入Maven lib)。如果文件没有存储在任何远程存储库上,而是存储在我的硬盘上,我可以这样做吗?

4 个答案:

答案 0 :(得分:1)

是的,您可以添加maven存储库并将其指向本地目录:

<repository>
   <id>local</id>
   <name>local</name>
   <url>file:${user.dir}/sample_lib-mvn-repo</url>
</repository>

https://maven.apache.org/guides/introduction/introduction-to-repositories.html

鉴于您的jar文件位于sample_lib-mvn-repo \ com \ dpp \ sample_lib \ 1.0-SNAPSHOT.jar,您可以将其添加为依赖项:

<dependency>
   <groupId>com.dpp</groupId>
   <artifactId>sample_lib</artifactId>
   <version>1.0-SNAPSHOT</version>
</dependency>

答案 1 :(得分:1)

简单地运行mvn install会将文件安装在本地存储库中。默认情况下,本地存储库位于.m2\repository下的主目录中。

使用上面的pom,在运行mvn install之后,您将在.m2\repository\com\dpp\sample_lib\1.0-SNAPSHOT中拥有jar(以及其他一些文件)。

要在其他项目中随后导入,您可以在该项目中创建一个依赖关系:

<dependency>
   <groupId>com.dpp</groupId>
   <artifactId>simple_lib</artifactId>
   <version>1.0-SNAPSHOT</version>
</dependency>

这一切只在您的机器上进行,不会使用任何远程存储库。

答案 2 :(得分:1)

现在您有一个存储库的本地模拟。

您可以使用https://maven.apache.org/pom.html#Repositories中所述的存储库标记导入它。要指定文件,请将其设置为文件URL,如文件:

答案 3 :(得分:0)

这不完全是你要问的。但是,快速而肮脏的解决方案是制作POM项目(无源代码)。

在POM项目中,你有主项目和外部项目。

您可以简单地依赖其他项目。