让MVN在MyProject / lib /中存储库?

时间:2013-10-16 12:38:12

标签: maven maven-3 local

我希望maven将依赖的jar存储在项目特定的 lib 文件夹中,而不是默认的 MyUser / .m2 / repository / 中。并非所有人在获得项目时都能访问互联网,并且复制全局本地存储库似乎是一种不太理想的解决方案。

如何说服maven在本地相对项目特定文件夹中存储和使用这些依赖项?

似乎我的问题是this Stackoverflow question

的重新版本

我做了类似的事情:

    <build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <version>${mvn-dependency-plugin.version}</version>
            <executions>
                <execution>
                    <id>copy-dependencies</id>
                    <phase>package</phase>
                    <goals>
                        <goal>copy-dependencies</goal>
                    </goals>
                    <configuration>
                        <outputDirectory>${project.basedir}/${local-lib-dir}</outputDirectory>
                        <overWriteReleases>false</overWriteReleases>
                        <overWriteSnapshots>false</overWriteSnapshots>
                        <overWriteIfNewer>true</overWriteIfNewer>
                        <stripVersion>true</stripVersion>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
    <build>

唯一的缺点是,日食maven仍然引用本地存储库中的jar。

2 个答案:

答案 0 :(得分:1)

我很遗憾地说,但如果您真的想要一个包含您正在使用的依赖项的lib文件夹,那么您将回到Ant时代,并开始将lib文件夹检入您的版本控制中坏。

如果您认为互联网访问不存在,您应该开始使用安装在本地网络中的Artifactory,Nexus或Archiva等存储库管理器,并且只有存储库管理器需要Internet连接。其他人只使用版本控制工具来检查来源,并可以开始使用该项目。

答案 1 :(得分:0)

您可以像下面这样管理外部依赖项:

<dependency>
    <groupId>mydependencygroup</groupId>
    <artifactId>my.artifact</artifactId>
    <scope>system</scope>
    <version>1.0</version>
    <systemPath>${basedir}\src\lib\myartifact.jar</systemPath>
</dependency>

lib文件夹位于src文件夹中。

希望它能解决。