`

Maven+Ant ? or Ant + Maven?

阅读更多

项目现在用的是Maven来控制管理项目开发。 

现在问题: 一个项目, 想针对不同情况,做不同部署。 即,一个项目ProjectA, 所针对的业务逻辑环境有EnvirC和EnvirD。对于EnvirC,ProjectA打包时需要 jspC1, jspC2, jspC3, classC1,ClassC2;对于EnvirD,ProjectA打包时只需要jspC1, jspC2和classC1。 

我们知道用ant打war包时,可以通过ant脚本选择要包含的文件,也可指定不包含进来的文件夹。 

但使用maven打包时,还没见过怎么在pom.xml中选文件,怎么指定不包含文件。

这样问题:
    1, 用Maven能不能像用ant脚本那样地指定文件? 如果不能,可不可以通过ant插件来拉来这个功能?
            如果能,可不可以在一个pom文件中写两个像ant中target概念?能不能怎么在maven打包时指定“target”? Maven调用Ant脚本的最佳实践。 
                如果不能写两个“target”, 倒是可以把两个target分别写在两个pom文件中,这样就引出新问题, maven能不能在打包时怎么指定pom文件?


为什么不直接用ant来打包? 这样的麻烦是,不能像maven那样优雅地引用jar包。 这样,转向一个问题,ant能不能像maven那样优雅地借用maven的jar包?在ant脚本中使用maven管理的dependency

分享到:
评论
5 楼 netstu 2010-01-26  
afdsfdsfdsfds
4 楼 glacier3 2010-01-24  
ant+ivy+headlesseclipse build
2 楼 skydream 2010-01-22  
请使用ant + ivy

我就是在使用maven一年之后,决定转向ant + ivy的。ivy能够提供足够强大的依赖管理功能,而且感觉比maven还要强大,更加灵活。然后依靠ant完成其他功能。

相当不错的一个组合。
1 楼 rrrrutdk 2010-01-10  
引用
一个项目, 想针对不同情况,做不同部署。 即,一个项目ProjectA, 所针对的业务逻辑环境有EnvirC和EnvirD。对于EnvirC,ProjectA打包时需要 jspC1, jspC2, jspC3, classC1,ClassC2;对于EnvirD,ProjectA打包时只需要jspC1, jspC2和classC1


使用profile

在pom中加入

<profiles>
  <profile>
    <id>EnvirC</id>
    <build>
      <plugins>
        <plugin>
          <artifactId>maven-compiler-plugin</artifactId>
          <configuration>
            <!-- 在这里使用<includes></includes>, <excludes></excludes> 来选择要使用的源文件 -->
            <!-- 在你举的例子中,EnvirC基本上包括所有资源,所以这里不用填 -->
          </configuration>
        </plugin>
        <plugin>
          <artifactId>maven-war-plugin</artifactId>
          <configuration>
            <!-- 在这里使用<packagingIncludes></packagingIncludes>, <packagingExcludes></packagingExcludes> 来选择要使用的jsp或其他资源 -->
            <!-- 在你举的例子中,EnvirC基本上包括所有资源,所以这里不用填 -->
          </configuration>
        </plugin>
      </plugins>
    </build>
  </profile>
  <profile>
    <id>EnvirD</id>
    <build>
      <plugins>
        <plugin>
          <artifactId>maven-compiler-plugin</artifactId>
          <configuration>
            <!-- 在这里使用<includes></includes>, <excludes></excludes> 来选择要使用的源文件 -->
            <excludes>classC2</excludes>
          </configuration>
        </plugin>
        <plugin>
          <artifactId>maven-war-plugin</artifactId>
          <configuration>
            <!-- 在这里使用<packagingIncludes></packagingIncludes>, <packagingExcludes></packagingExcludes> 来选择要使用的jsp或其他资源 -->
            <packagingExcludes>jspC3</packagingExcludes>
          </configuration>
        </plugin>
      </plugins>
    </build>
  </profile>
</profiles>


在运行时使用
mvn -p [profile_name] [goal(s)] [phase(s)]

示例
mvn -p EnvirC clean package


我没有试过上面的pom片段是否能做到你所说的,但使用profile一定可以达到你所说的要求。
maven-compiler-plugin,maven-war-plugin的configuration中的配置请见官方文档:
maven-compiler-plugin: http://maven.apache.org/plugins/maven-compiler-plugin/
maven-war-plugin: http://maven.apache.org/plugins/maven-war-plugin/

引用
用Maven能不能像用ant脚本那样地指定文件?maven能不能在打包时怎么指定pom文件?


mvn -f [pom location]

示例
mvn -f another_pom.xml clean package


引用
为什么不直接用ant来打包? 这样的麻烦是,不能像maven那样优雅地引用jar包。 这样,转向一个问题,ant能不能像maven那样优雅地借用maven的jar包?


请使用ant + ivy

           

相关推荐

Global site tag (gtag.js) - Google Analytics