Maven AntRun 插件详解

AntRun 插件只有一个插件目标:antrun:run ,提供了在 Maven 中运行 Ant 任务的能力。您甚至可以将 Ant 脚本嵌入 POM 中,但该插件的目的不是提供污染 POM 的方法,因此鼓励您将所有 Ant 任务移动到 build.xml 文件中的 元素中,并使用 Ant 的 任务从 POM 调用它。这个插件的主要目的之一是促进从基于 Ant 的项目到 Maven 的迁移。一些项目目前可能无法迁移,因为它们依赖于 Maven 默认情况下不提供的自定义构建功能。

所有可选参数

  • 。用于内置 Ant 任务的 xml 标签前缀。需要在 antrun target 配置中引用的每个任务前面加上此前缀。例如,前缀 mvn 表示 attachartifact 任务由 引用。空字符串的默认值表示任务不使用前缀。
  • 。指定是否应将 Ant properties 传播到 Maven properties。
  • 。指定 Ant 构建中的失败是否会导致 Maven 构建失败。如果该值为 false,那么即使 Ant 构建失败,Maven 构建也将继续。如果该值为 true(默认),那么如果 Ant 构建失败,Maven 构建就会失败。
  • 。项目和依赖项属性名称前的字符串。
  • 。指定是否应跳过 AntRun 的执行。
  • 。Ant 目标的 XML 内容。您可以在该元素中添加任何可以在 build.xml 文件中的 元素中可以添加的内容。
  • 。包含所有依赖项版本列表的 property 的名称。这用于从文件名中删除版本。默认为 maven.project.dependencies.versions

示例

下面是一个使用 maven-antrun-plugin 插件的模板:


  [...]
  
    
      
        maven-antrun-plugin
        3.0.0
        
          
              
            
              

                

              
            
            
              run
            
          
        
      
    
  
  [...]

此外,您可以通过复制 部分并指定一个新阶段,向每个生命周期阶段添加脚本。最后,您可以在 元素中指定一些 Ant property。仅未包装 Ant 中的 dependens attribute。

[...]

  

    

  

[...]

Maven 可用的所有 property 在 target 配置中也可用。但是,您可能希望使用 Ant 任务调用外部 Ant 构建脚本。为了避免名称冲突,只将 properties 的子集(而不是全部)传递给外部 Ant 构建。这些包括 POM properties 部分中定义的所有 property。它还包括一些常用 Maven property 的前缀版本。

  maven.project.groupId
  maven.project.artifactId
  maven.project.name
  etc.

如果要使用的 Maven property 在外部文件中不可用,则必须在调用 Ant 之前重新定义该 property。

  
  

一些 Ant 表达式在 Maven 中有各自的对应功能。因此,可以简单地调用对应的 Maven 功能,而不是使用 Maven AntRun 插件,以避免不必要的开销。

Ant 功能 对应的Maven功能
内置任务
Ant maven-antrun-plugin
AntCall maven-antrun-plugin
Available profiles
BUnzip2 maven-assembly-plugin
BZip2 maven-assembly-plugin
Chmod maven-assembly-plugin
Condition profiles
Copy maven-resources-plugin
Dependset maven-dependency-plugin
Ear maven-ear-plugin
Filter maven-resources-plugin Note: Filter uses the @...@ token while maven-resources-plugin uses the $... token
FixCRLF maven-resources-plugin
GenKey maven-jar-plugin
GUnzip maven-assembly-plugin
GZip maven-assembly-plugin
Jar maven-jar-plugin
Javac maven-compiler-plugin
Javadoc/Javadoc2 maven-javadoc-plugin
LoadProperties maven-resources-plugin
Manifest maven-jar-plugin
Property maven-resources-plugin
Replace maven-resources-plugin Note: Replace can specify its token while maven-resources-plugin uses the $... token
Tar maven-assembly-plugin
Unjar maven-assembly-plugin
Untar maven-assembly-plugin
Unwar maven-assembly-plugin
Unzip maven-assembly-plugin
War maven-war-plugin
Zip maven-assembly-plugin
可选任务
Antlr maven-antlr-plugin
Depend maven-dependency-plugin
EJB Tasks maven-ejb-plugin
FTP maven-deploy-plugin Note: maven-deploy-plugin can only deploy unto the FTP
JavaCC maven-compiler-plugin
JJDoc maven-compiler-plugin
JJTree maven-compiler-plugin
JUnit maven-surefire-plugin
JUnitReport maven-surefire-report-plugin
ServerDeploy maven-deploy-plugin
Setproxy maven-deploy-plugin
Translate maven-resources-plugin Note: Translate can specify its own tokens and can have a different encoding scheme for reading and writing files. maven-resources-plugin however uses the $... annotation only and has only one encoding scheme for reading and writing

引用 Maven 类路径

在 Ant 构建中为每个项目依赖项设置一个属性。每个属性名称都使用格式 groupId:artifactId:type[:classifier]。例如,要使用 groupId 为 org.apache 、artifactId 为 common-util 的 依赖 jar 的路径,可以使用以下命令。

 

如果依赖项包括 classifer,则 classifer 将附加到 property 名称。例如,groupId 为 org.apache、artifactId 为 common-util、类型为 jar 和 classifer 为 jdk14。

 

从 3.0.0 版本起,不支持旧格式 maven.dependency.groupId.artifactId[.classifier].type.path

您还可以使用以下类路径引用:

  • maven.compile.classpath
  • maven.runtime.classpath
  • maven.test.classpath
  • maven.plugin.classpath

例如,要使用 antrun 显示 Maven 的类路径,我们可以这样做:


  4.0.0
  my-test-app
  my-test-group
  1.0-SNAPSHOT

  
    
      
        org.apache.maven.plugins
        maven-antrun-plugin
        3.0.0
        
          
            compile
            compile
            
              
                
                
                
                

                
                
                
                
              
            
            
              run
            
          
        
      
    
  

或者,我们也可以使用外部 build.xml。


  4.0.0
  my-test-app
  my-test-group
  1.0-SNAPSHOT

  
    

      
        org.apache.maven.plugins
        maven-antrun-plugin
        3.0.0
        
          
            compile
            compile
            
              
                
                
                
                

                
                  
                
              
            
            
              run
            
          
        
      
    
  

build.xml



    
      
      
      
      
    

使用 attribute

您可以在 配置中指定 attributes 来执行或不执行 Ant 任务,具体取决于某些条件。例如,要跳过 Ant 调用,可以添加以下内容:


  ...
  
    
      ...
      
        org.apache.maven.plugins
        maven-antrun-plugin
        3.0.0
        
          
              
            
              
                
              
            
            
              run
            
          
        
      
      ...
    
  
  ...

使用 Ant 默认 jar 中未包含的任务

要使用 Ant jar 中未包含的 Ant 任务,如 Ant 可选任务或自定义任务,您需要将任务运行所需的依赖项添加到插件类路径,并在需要时使用maven.plugin.classpath 引用。


  4.0.0
  my-test-app
  my-test-group
  1.0-SNAPSHOT

  
    
      
        org.apache.maven.plugins
        maven-antrun-plugin
        3.0.0
        
          
            ftp
            deploy
            
              
                
                  
                    
                  
                
                
                
              
            
            
              run
            
          
        
        
          
            commons-net
            commons-net
            1.4.1
          
          
            org.apache.ant
            ant-commons-net
            1.8.1
          
        
      
    
  

你可能感兴趣的:(Maven AntRun 插件详解)