在 java 中创建 WAR 时调用函数



我们想在页面上显示一个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事件怎么做??

这取决于你用什么来建造战争。

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

如果您使用 ant,您可以通过两个步骤执行此操作:

  1. 创建一个这样的类:
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 构建文件:
<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>

最新更新