Как удалить закомментированные свойства из файла свойств с помощью ant build? - PullRequest
0 голосов
/ 27 декабря 2018

Я хочу удалить закомментированные свойства из файла свойств через сборку муравья.В целях безопасности я не хочу показывать свои производственные свойства на серверах песочницы.

Файл свойств:

#production properties
#redis.master.url=redis.prod.master.compny.com
#redis.slave.url=redis.prod.slave.compny.com

#sandboxproperties
redis.master.url=redis.sandbox.master.compny.com
redis.slave.url=redis.sandbox.slave.compny.com

поэтому мой пакет war должен иметь следующий файл свойств:

redis.master.url=redis.sandbox.master.compny.com
redis.slave.url=redis.sandbox.slave.compny.com

Ответы [ 3 ]

0 голосов
/ 27 декабря 2018

Вы можете сделать это, используя скрипт в ant:

<macrodef name="remove-properties-comments">
    <attribute name="inFile" />
    <attribute name="outFile" />
    <sequential>
        <script language="javascript">
            <![CDATA[
                // get the arguments
                var inFile = "@{inFile}"
                var outFile = "@{outFile}"

                // or get properties from the ant environment
                // eg: <property name="property.from.ant.project" value="value" />
                // var antProp = project.getProperty("property.from.ant.project");

                // load Java types
                var File = Java.type("java.io.File")
                var PrintWriter = Java.type("java.io.PrintWriter")
                var Scanner = Java.type("java.util.Scanner")

                // init reader and writer
                var reader = new Scanner(new File(inFile))
                var writer = new PrintWriter(outFile)

                // if previous line ended in '\' then it is a muliline property
                // so the following line should always be included
                var multiline = false
                while (reader.hasNextLine()) {
                    var line = reader.nextLine();
                    // you could exclude blank lines too if you want
                    if (multiline || !(line.startsWith("#") || line.startsWith("!"))) {
                        writer.println(line);
                    }
                    multiline = line.endsWith("\\");
                }
               ]]>
        </script>
    </sequential>
</macrodef>

<target name="test">
    <remove-properties-comments inFile="path/to/inFile.properties" outFile="path/to/outFile.properties" />
</target>
0 голосов
/ 29 декабря 2018

Я понял это просто используя replaceregexp.

<target>
    <replaceregexp match="\n#(.*)" replace="" flags="g" byline="false">
        <fileset dir="${build.home}/WEB-INF/classes" includes="**/*.properties" />
    </replaceregexp>
</target>

Здесь \n#(.*) соответствует <newline> (\n), за которым следует #, за которым следует любой набор символов (*).

0 голосов
/ 27 декабря 2018

Согласно Документам Ant :

Apache Ant предоставляет дополнительную задачу для редактирования файлов свойств.Это очень полезно, когда вы хотите вносить автоматические изменения в файлы конфигурации для серверов приложений и приложений.В настоящее время задача поддерживает рабочий файл свойств с возможностью добавления свойств или внесения изменений в существующие. Начиная с Ant 1.8.0, комментарии и макет исходного файла свойств сохраняются.

Таким образом, в зависимости от используемой вами версии сборки ant, вы можете удалить комментарии изфайл свойств.

...