0

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

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

似乎我的问题是这个 Stackoverflow 问题的改写版本

我做了这样的事情:

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

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

4

2 回答 2

1

我很抱歉这么说,但是如果你真的想拥有一个包含你正在使用的依赖项的 lib 文件夹,那么你回到 Ant 时代并开始将 lib 文件夹签入到你的版本控制中,这真的很糟糕。

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

于 2013-10-16T17:29:58.650 回答
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 文件夹中。

希望它有帮助。

于 2013-10-16T14:35:16.410 回答