首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过maven-antrun-plugin使用反控件<if>任务

通过maven-antrun-plugin使用反控件<if>任务
EN

Stack Overflow用户
提问于 2011-01-18 12:25:13
回答 4查看 21.6K关注 0票数 17

我的maven java项目使用maven-antrun-plugin来执行部署我的应用程序的deploy.xml ant脚本。deploy.xml使用<if>任务,这似乎是造成问题的原因;

执行任务的

信息

taskdef无法从资源net/sf/antcont肋骨/antlib.xml加载定义。找不到了。

部署:

信息

错误构建错误

信息

信息已发生Ant BuildException :执行这一行时发生了以下错误:

E:\My_Workspace\xxxxxx\xxxxxx\xxxxxxx\deploy.xml:24:问题:创建任务或类型失败

原因:名称未定义。

操作:检查拼写。

操作:检查是否已声明任何自定义任务/类型。

操作:检查是否发生了任何/声明。

这是我的pom中的antrun插件配置;

代码语言:javascript
复制
<plugin>
    <inherited>false</inherited>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-antrun-plugin</artifactId>
    <executions>
        <execution>
            <id>remote-deploy</id>
            <phase>install</phase>
            <configuration>
                <tasks>
                    <taskdef resource="net/sf/antcontrib/antcontrib.properties" classpathref="maven.plugin.classpath"/>

                        <property name="compile_classpath" refid="maven.compile.classpath" />
                        <property name="runtime_classpath" refid="maven.runtime.classpath" />
                        <property name="plugin_classpath" refid="maven.plugin.classpath" />
                                
                        <echo message="compile classpath: ${compile_classpath}"/>
                        <echo message="runtime classpath: ${runtime_classpath}"/>
                        <echo message="plugin classpath: ${plugin_classpath}"/>

                        <ant antfile="${basedir}/deploy.xml">
                            <target name="deploy" />
                        </ant>
                </tasks>
            </configuration>
            <goals>
                <goal>run</goal>
            </goals>
        </execution>
    </executions>
    <dependencies>
        <dependency>
            <groupId>ant-contrib</groupId>
            <artifactId>ant-contrib</artifactId>
            <version>1.0b3</version>
        </dependency>
        <dependency>
            <groupId>org.apache.ant</groupId>
            <artifactId>ant</artifactId>
            <version>1.7.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.ant</groupId>
            <artifactId>ant-jsch</artifactId>
            <version>1.7.1</version>
        </dependency>
    </dependencies>
</plugin>

。。这是我的deploy.xml的相关章节;

代码语言:javascript
复制
<target name="deploy" if="deploy">
    <if>    <!-- line 24 -->
        <and>

为什么我要查看我的maven repo,我可以看到ant-contrib/ant-contrib/1.0b3/ant-contrib-1.0b3.jar,当我查看jar内部时,我可以看到net/sf/antcontrib/antcontrib.properties,所以这里没有问题。

当我检查maven.compile.classpathmaven.compile.classpathmaven.compile.classpath的值时,我看不到对antcontrib的任何引用,这是问题吗?当antcontrib被定义为依赖关系时,它们为什么不出现呢?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-01-18 13:22:22

好吧,我已经解决了。

将依赖项移出<build><plugin>标记,并将它们与其他项目依赖项放在一起,似乎已经做到了这一点。

票数 3
EN

Stack Overflow用户

发布于 2012-12-04 10:56:08

我认为添加ant来编译类路径以运行maven插件并不是一个好主意。

我使用Maven 3.0.4,它的工作方式是为ant-cont肋骨标记指定名称空间,例如:

代码语言:javascript
复制
<configuration>
  <target>
    <echo message="The first five letters of the alphabet are:"/>
    <ac:for list="a,b,c,d,e" param="letter" xmlns:ac="antlib:net.sf.antcontrib">
      <sequential>
        <echo>Letter @{letter}</echo>
      </sequential>
    </ac:for>
  </target>
</configuration>

我的maven-antrun-plugin依赖关系:

代码语言:javascript
复制
<dependencies>
  <dependency>
    <groupId>ant-contrib</groupId>
    <artifactId>ant-contrib</artifactId>
    <version>1.0b3</version>
    <exclusions>
      <exclusion>
        <groupId>ant</groupId>
        <artifactId>ant</artifactId>
      </exclusion>
    </exclusions>
  </dependency>
  <dependency>
    <groupId>org.apache.ant</groupId>
    <artifactId>ant-nodeps</artifactId>
    <version>1.8.1</version>
  </dependency>
</dependencies>
票数 29
EN

Stack Overflow用户

发布于 2017-05-08 17:36:14

我发现您需要在插件中包含ant-cont肋骨依赖项,这将使taskdef标记能够找到antcontrib.properties。

代码语言:javascript
复制
  <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-antrun-plugin</artifactId>
            <dependencies>
                <dependency>
                    <groupId>ant-contrib</groupId>
                    <artifactId>ant-contrib</artifactId>
                    <version>20020829</version>
                </dependency>
            </dependencies>
            <executions>
                <execution>
                    <id>copy-and-rename-template-files</id>
                    <phase>prepare-package</phase>
                    <goals>
                        <goal>run</goal>
                    </goals>
                    <configuration>
                        <target name = "copy-and-rename-template-files">
                            <taskdef resource="net/sf/antcontrib/antcontrib.properties"/>
                            <if>
                                <available file="src/main/resources/docker/templates" type="dir"/>
                                <then>
                                    <copy todir="${project.build.directory}/docker">
                                        <fileset dir="src/main/resources/docker/templates">
                                            <include name="**/*"/>
                                        </fileset>
                                    </copy>


                                    <move todir="${project.build.directory}/docker">
                                        <fileset dir="${project.build.directory}/docker">
                                            <include name="*"/>
                                        </fileset>
                                        <mapper>
                                            <regexpmapper from="(.*)project(.*)" to="\1${project.artifactId}\2"/>
                                        </mapper>
                                    </move>
                                </then>

                                <else>
                                    <echo>src/main/resources/docker/templates does not exist, skipping processing docker templates</echo>
                                </else>
                            </if>
                        </target>
                    </configuration>
                </execution>
            </executions>
        </plugin>
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4724007

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档