java - 有没有办法在 Maven 尝试解决它们之前安装 Maven 依赖项?

标签 java maven-2 maven

我必须从远程位置解压一些依赖项并在本地安装它们。

我成功地获取了它们(使用 antrun 插件)并安装了它们(使用了 install 插件)

但是,如果我将它们定义为依赖项 (<dependency>..</dependency>),maven 会首先尝试解析它们,只有在成功后,才会继续执行 antrun 并安装。

我还尝试了 build-helper-plugin 及其附加 Artifact ,但它什么也没做(它甚至没有将 Artifact 添加到最终的 war 文件中)

那么,如何在 maven 尝试解决依赖关系之前运行我的执行?

最佳答案

有趣的问题!一种尝试(也许)实现这一目标是使用多模块项目设置。

在父项目中获取并安装您的依赖项,并在子模块中使用它们。我这样测试了我的假设:

父 pom.xml

<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>foo.bar</groupId>
    <artifactId>foo.bar.parent</artifactId>
    <version>1.0.0</version>
    <packaging>pom</packaging>

    <modules>
        <module>foo.bar.child</module>
    </modules>

    <build>
        <plugins>
            <plugin>
                <artifactId>maven-antrun-plugin</artifactId>
                <version>1.6</version>
                <executions>
                    <execution>
                        <phase>validate</phase>
                        <configuration>
                            <target>
                                <echo
                                    message="Hello world!" />
                            </target>
                        </configuration>
                        <goals>
                            <goal>run</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

</project>

模块 pom.xml

<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>foo.bar</groupId>
    <artifactId>foo.bar.child</artifactId>
    <version>1.0.0</version>

    <parent>
        <groupId>foo.bar</groupId>
        <artifactId>foo.bar.parent</artifactId>
        <version>1.0.0</version>
    </parent>

    <dependencies>
        <dependency>
            <artifactId>can.not</artifactId>
            <groupId>find.me</groupId>
            <version>0.0.0</version>
        </dependency>
    </dependencies>

</project>

在子模块构建失败(因为缺少依赖项)之前,我从父 pom 构建中获得了“Hello World”输出。如果您实现了在 parent.pom 的构建中提供依赖项,则子模块项目应该是可构建的。

关于java - 有没有办法在 Maven 尝试解决它们之前安装 Maven 依赖项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5951999/

相关文章:

java - 按 CTRL + 鼠标滚轮将缩放

java - 在 IDEA 中,在 Maven 中添加依赖项后,我的工件总是显示库需要为 'fixed'

java - 使用 Maven 和 Java 5 (JPA) 进行注释处理

java - 从 CoreNLP 模型 jar 文件加载特定模型文件而不是其本地副本

eclipse - 使用 tycho 在 Eclipse 产品配置文件中执行替换

java - 全局运行 Maven 插件

java - JSP 中的 session 变量

java - Java 程序如何检测到 MacOS 机器正在关闭?

java - 使用基于百分比通过/失败子作业的 Groovy 脚本设置 Jenkins 多作业构建结果

java - 为什么我可以通过指定路径作为参数来运行这个由 Maven 打包的文件,但不能通过在路径变量中永久设置路径来运行?