Вы должны передать необходимые зависимости непосредственно в объявление плагина antrun, сразу после элемента <executions>
.
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.2.1</version>
<executions>
...
</executions>
<dependencies>
<dependency>
<groupId>ant-contrib</groupId>
<artifactId>ant-contrib</artifactId>
<version>${ant-contrib.version}</version>
<exclusions>
<exclusion>
<groupId>ant</groupId>
<artifactId>ant</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>jasper</artifactId>
<version>${tomcat.compile.version}</version>
</dependency>
<dependency>
<groupId>com.sun</groupId>
<artifactId>tools</artifactId>
<version>${java.version}.0</version>
<scope>system</scope>
<systemPath>${jdk.home}/tools.jar</systemPath>
</dependency>
</dependencies>
</plugin>
Я включил некоторые библиотеки, которые я использую в нашем проекте, чтобы у вас был пример. Обратите внимание, что если ваша сборка использует некоторые нестандартные (то есть что-то вне java.lang
) классы Java API, вы должны передать tools.jar
в качестве зависимости.
Кроме того, если вы используете ant-contrib
, не забудьте исключить ant
в качестве зависимости, поскольку она зависит от какой-то древней версии ant, и вы получите коллизию версий.
Еще одна досадная вещь заключается в том, что зависимости, назначаемые непосредственно для выполнения плагина, не являются частью <dependencyManagement>
POM, поэтому вам нужно указать точные версии. Одним из обходных путей является объявление свойств версии в том же месте, что и ваш центральный <dependencyManagement>
, и использование свойств вместо жестко закодированных версий.