Zdenek F
Zdenek F

Reputation: 1899

Maven plugin dependencies are ignored

I created this profile for deploying artifacts on the server via SCP. I know Ant's scp task is optional, therefore I've added the dependencies.

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

However, when I run the profile, I end up with

An Ant BuildException has occured: Problem: failed to create task or type scp Cause: the class org.apache.tools.ant.taskdefs.optional.ssh.Scp was not found. This looks like one of Ant's optional components. Action: Check that the appropriate optional JAR exists in -ANT_HOME\lib -the IDE Ant configuration dialogs

Do not panic, this is a common problem. The commonest cause is a missing JAR.

This is not a bug; it is a configuration problem

Is it possible maven wasn't able to download those dependencies or it just ignores them?

Upvotes: 0

Views: 2960

Answers (3)

J&#246;rg
J&#246;rg

Reputation: 2494

There is a maven-antrun-plugin bug entry, that could explain why this is happening in Maven-2, they also describe workarounds

In multi-module builds, if there are multiple poms configuring the maven-antrun-plugin, the first(?) seems to win, so that the ones later in the build chain reuse the antrun config from earlier poms, thus missing out on stuff that is different ...

In my problem case, I opted to use Maven-3, where the issue seems to be fixed, instead of workarounds with Maven-2. This had the additional advantage of the build to also speed up - now taking 6min instead of the 10min before. However, if Maven-3 is not possible for you, I'd try the workarounds...

Upvotes: 0

Zdenek F
Zdenek F

Reputation: 1899

The problem was Maven (2.2.1) didn't download the dependencies. I've found out after I upgraded Maven to version 3. For some reason,the new version downloaded the plugin dependencies and it miraculously started to work.

I have a suspicion the problem was in old version Maven's settings - pluginRepository wasn't configured.

Upvotes: 1

Raghuram
Raghuram

Reputation: 52645

It is likely that maven has downloaded the jars but it is not in ant's classpath. If the objective is to deploy the artifacts using maven, you should probably use Maven Deploy Plugin. What you are doing seems to be a roundabout way.

Upvotes: 0

Related Questions