1

我有一些不在存储库中的 3rd 方 jars,我需要在构建时安装它们。我正在尝试使用 ant 插件将生成的 jar 和 pom 从我的项目/lib 文件夹复制到本地存储库

我的 src/main/lib 目录包含以下文件夹结构 com/oracle/ojdbc14/10.2/ojdbc.jar、ojdbc.pom

<plugin> 
            <groupId>org.apache.maven.plugins</groupId> 
            <artifactId>maven-antrun-plugin</artifactId> 
            <version>1.7</version> 
            <executions> 
                <execution> 
                    <phase>validate</phase> 
                    <goals> 
                        <goal>run</goal> 
                    </goals> 
                    <configuration> 
                        <tasks> 
                            <copy todir="${settings.localRepository}" >  
                                <fileset dir="${basedir}/src/main/lib/" includes="**"/>  
                            </copy>
                        </tasks> 
                    </configuration> 
                </execution> 
            </executions> 
        </plugin> 

但是当我运行 mvn install 时,它会失败并显示以下消息

Failure to find com.oracle:ojdbc14:jar:10.2.0.3.0

为什么在对依赖项进行任何检查之前运行来自 ant(验证阶段)的复制命令

4

2 回答 2

3

对不起,但这完全糟透了。如果你真的不能将这个第 3 方的东西部署到某种内部或私有 Maven 存储库,那么到目前为止我发现做这种事情的最好方法是对install:install-file所有这些 jar 使用目标。我们为此创建了 2 个 shell 脚本(用于 Windows 和 Linux),并通过 SCM 在bootstrap目录中共享它们(或类似的东西)。请注意,每个新开发人员都必须这样做一次,因为这些工件随后可以在本地 Maven 存储库中解析。

查看有关install:install-file目标的详细信息:http ://maven.apache.org/plugins/maven-install-plugin/install-file-mojo.html

于 2012-04-11T20:05:25.387 回答
2

获取存储库管理器并在那里安装工件。其他一切都是丑陋的黑客,比安装和使用存储库管理器更具侵入性和麻烦。查看 Nexus、Artifactory 或 Archiva,并从使用它中获得所有好处,例如改进的构建性能、易于使用第三方库以及能够在内部共享工件。

于 2012-04-11T20:49:32.847 回答