java - 在java中创建WAR时调用一个函数

标签 java grails

我们想在创建 JAVA(Web Dynamic Project 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 事件 如何做到这一点??

最佳答案

这取决于你用什么来建立 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>

关于java - 在java中创建WAR时调用一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27981892/

相关文章:

tomcat - 如何检测grails中的构建时间?此外,在构建 war 时指定提交修订

java - 以下声明数组的方式是什么意思?

java - Eclipse:在编辑器中显示每一行的作者?

spring - 在 Grails 中使用 HazelCast 进行 Web session 复制 - HazelcastSerializationException

ruby-on-rails - jRuby on Rails 与 Grails

grails - 如何在Micronaut中添加或导入Grails依赖项

java - 使用 if( !"D".equalsIgnoreCase(answer)) 比较字符串不起作用

java - JComboBox/JTextField 的每个单词在任何地方自动完成

java - 使用 xml :space ="preserve" in POI SXSSF

grails - 如何使用GGTS 3.2.0将grails 1.3.7项目升级到grails 2.2.1