Maven插件依赖项被忽略

时间:2011-01-13 22:41:56

标签: ssh dependencies maven maven-plugin scp

我创建了此配置文件,用于通过SCP在服务器上部署工件。我知道Ant的scp任务是可选的,因此我添加了依赖项。

<profiles>
        <profile>
            <id>remote-deploy</id>
            <build>
                <plugins>
                    <plugin>
                        <artifactId>maven-antrun-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>scp</id>
                                <phase>install</phase>
                                <configuration>
                                    <tasks>
                                        <scp .../>
                                        <sshexec .../>
                                    </tasks>
                                </configuration>
                                <goals>
                                    <goal>run</goal>
                                </goals>
                            </execution>
                        </executions>
                        <dependencies>
                            <dependency>
                                <groupId>org.apache.ant</groupId>
                                <artifactId>ant-jsch</artifactId>
                                <version>1.7.1</version>
                            </dependency>
                            <dependency>
                                <groupId>com.jcraft</groupId>
                                <artifactId>jsch</artifactId>
                                <version>0.1.42</version>
                            </dependency>
                        </dependencies>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>

但是,当我运行个人资料时,我最终会

  

发生了Ant BuildException:   问题:无法创建任务或类型   scp原因:上课   org.apache.tools.ant.taskdefs.optional.ssh.Scp   没找到。           这看起来像Ant的可选组件之一。行动:检查   适当的可选JAR   存在于           -ANT_HOME \ LIB            - IDE Ant配置对话框

     不要惊慌,这是常见的   问题。最常见的原因是   缺少JAR。

     

这不是一个错误;它是一个   配置问题

maven是否有可能无法下载这些依赖项或它只是忽略它们?

3 个答案:

答案 0 :(得分:1)

问题是Maven(2.2.1)没有下载依赖项。我将Maven升级到版本3后发现了。出于某种原因,新版本下载了插件依赖项,它奇迹般地开始工作。

我怀疑旧版Maven的设置存在问题 - pluginRepository未配置。

答案 1 :(得分:0)

maven可能已下载了jar,但它不在ant的classpath中。如果目标是使用maven部署工件,则应该使用Maven Deploy Plugin。你在做什么似乎是一种迂回的方式。

答案 2 :(得分:0)

有一个maven-antrun-plugin bug entry,可以解释为什么在Maven-2中发生这种情况,他们也会描述workarounds

在多模块构建中,如果有多个poms配置maven-antrun-plugin,则第一个(?)似乎获胜,因此稍后在构建链中的那些将重用来自早期poms的antrun配置,从而丢失关于不同的东西...

在我的问题中,我选择使用 Maven-3 ,其中问题似乎已修复,而不是使用Maven-2的解决方法。这还具有构建的额外优势,也可以加速 - 现在需要6分钟而不是之前的10分钟。 但是,如果你不能使用Maven-3,我会尝试解决方法......