【问题标题】:Can I use ant war task to export a war built with Maven?我可以使用 ant war 任务导出使用 Maven 构建的战争吗?
【发布时间】:2012-03-16 11:09:11
【问题描述】:

我在日常开发中使用 eclipse 和 maven,效果很好。但是,我需要在导出时创建一个专门的战争以发送到生产,其中包括缩小和组合 js/css 等,为 apache 而不是 tomcat 分离静态资源等。

我尝试了 maven 插件路由但很麻烦,我宁愿编写一个简单的 ant 脚本以在必要时导出。我正在使用 ant war 任务,但导出的战争包含除了我的 WEB-INF/libs 文件夹之外的所有内容,该文件夹是空白的。有谁知道使脚本与 maven 查找的所有库一起工作的方法?这就是我所拥有的:

<?xml version="1.0" encoding="UTF-8"?>
<project name="MyProject" default="war" basedir=".">

    <property name="builder" value="Me" />
    <property name="project-name" value="${ant.project.name}" />
    <property name="war-file-name" value="${project-name}.war" />
    <property name="source-directory" value="src/main/java" />
    <property name="classes-directory" value="target/classes" />
    <property name="web-directory" value="src/main/webapp" />
    <property name="web-xml-file" value="src/main/webapp/WEB-INF/web.xml" />
    <property name="build-directory" value="/" />

    <tstamp prefix="build-info">
        <format property="current-date" pattern="d-MMMM-yyyy" locale="en" />
        <format property="current-time" pattern="hh:mm:ss a z" locale="en" />
    </tstamp>

    <target name="war" depends="">
        <mkdir dir="${build-directory}" />
        <delete file="${build-directory}/${war-file-name}" />
        <war warfile="${build-directory}/${war-file-name}" webxml="${web-xml-file}">
            <classes dir="${classes-directory}" />
            <fileset dir="${web-directory}">
                <exclude name="WEB-INF/web.xml" />
            </fileset>
            <manifest>
                <attribute name="Built-By" value="${builder}" />
                <attribute name="Built-On" value="${build-info.current-date}" />
                <attribute name="Built-At" value="${build-info.current-time}" />
            </manifest>
        </war>
    </target>

</project>

【问题讨论】:

  • 我不建议使用这样的 ant 脚本。如果您通过 Maven 发布,这将不起作用。在我看来,更好的事情是你解释了你究竟需要做什么以及你的目标战必须是什么样子,并且可能有一些想法如何以 Maven 方式解决这个问题。 (一个关于 maven-assembly-plugin 的想法)...

标签: maven ant build


【解决方案1】:

您可以为此使用maven ant tasks。我还没有尝试过,但是从the examples,这样的东西应该可以工作......

<artifact:dependencies filesetId="dependency.fileset" useScope="runtime">
  <pom file="pom.xml"/>
</artifact:dependencies>
<copy todir="${webapp.output}/WEB-INF/lib">
  <fileset refid="dependency.fileset" />
  <!-- This mapper strips off all leading directory information -->
  <mapper type="flatten" />
</copy>

【讨论】:

  • 谢谢,我稍后试试
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-25
  • 1970-01-01
  • 2014-11-24
相关资源
最近更新 更多