在java中创建WAR时调用函数

时间:2015-01-16 10:27:13

标签: java grails

我们希望在创建JAVA(Web动态项目3.0)的WAR时显示页面上的时间,我们通过调用此函数在Grails中执行此操作

/**
 * Gant script to update buildtimestamp
 */
eventCreateWarStart = { warName, stagingDir ->
    def buildDate = new Date()

    ant.propertyfile(file: "${stagingDir}/WEB-INF/classes/application.properties") {
        entry(key:"build.date", value:buildDate)
    }

}

现在我们想在java中实现同样的事情,WAR事件是在创建该项目的WAR时调用的 怎么做??

1 个答案:

答案 0 :(得分:1)

这取决于你用来制造战争的东西。

如果直接使用jar命令,则应该创建一个脚本,将日期写入application.properties文件并启动war创建。

如果你使用ant,你可以分两步完成:

  1. 创建一个类似这样的类:
  2. package tests;
    
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.util.Date;
    import java.util.Properties;
    
    public class GeneratePropertiesFile {
        public static void main(String[] args) throws IOException {
            Properties properties = new Properties();
            properties.setProperty("build.date", new Date().toString());
            properties.store(new FileOutputStream(stagingDir + "/WEB-INF/classes/application.properties"), "");
        }
    }
    
    1. 写一个这样的ant构建文件:
    2. <project name="sample" basedir="." default="buildWar">
          <target name="buildProperties">
              <java fork="true" failonerror="yes" classname="tests.GeneratePropertiesFile"/>
          </target>
          <target name="buildWar" depends="buildProperties">
              <war destfile="myapp.war" webxml="src/metadata/myapp.xml">
                  <fileset dir="src/html/myapp"/>
                  <fileset dir="src/jsp/myapp"/>
                  <lib dir="thirdparty/libs">
                      <exclude name="jdbc1.jar"/>
                  </lib>
                  <classes dir="build/main"/>
              </war>
          </target>
      </project>