我创建了此配置文件,用于通过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是否有可能无法下载这些依赖项或它只是忽略它们?
答案 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,我会尝试解决方法......