2016-01-18 1 views
0

У меня есть простой веб-проект с Gradle, и я хочу, чтобы получить Gradle переменного в thymeleaf шаблона, как: Обновленной часть шаблона Thymeleaf <title>Simple project title v.: @[email protected]</title>Как получить доступ к переменной gradle в шаблоне тимелеафа?

и build.gradle У меня есть этот переменный (обновлено после комментариев): import org.apache.tools.ant.filters.ReplaceTokens def myVar = "dev" ... minimized ... war { filter(ReplaceTokens, tokens: ['@[email protected]': myVar]) } где dev - это пользовательское значение с моего сервера сборки, который проходит мимо gradle war -P myVar=122.

Как я могу получить его, если это возможно?

ответ

1

Вы не сможете это сделать. Ну ... не так, как вы пытаетесь. И тогда есть то, что ваш код не должен зависеть от инструмента построения.

Что вы, , должны делать вместо этого, получите инструмент построения, чтобы ввести переменную в ваш код.

Я уверен, что ваш шаблон thymeleaf копируется из своего местоположения в другое место во время сборки, в этот момент добавьте предложение фильтра.

change 
<title>Some title ${#myVar}</title> 
to 
<title>Some title @[email protected]</title> 

, а затем

import org.apache.tools.ant.filters.ReplaceTokens // dont forget this import 

war { 
    filter(ReplaceTokens, tokens: [myVar: myVar]) 
} 
+1

И во время процесса сборки мне нужно только передать параметр в командной строке, как: 'Gradle война -P MYVAR = 126'? –

+0

Нечто хорошее. Я настраиваю задачу 'war', когда вы пишете, включая' import ... ', и на сервере сборки передаете аргументы для gradle как 'war -P myVar = $ {bamboo.buildNumber}', а в журналах я вижу правильную команду с номерами, и я получаю архив WAR, но в шаблоне моя переменная не изменилась. Вот часть моих сценариев build.gradle: 'import org.apache.tools.ant.filters.ReplaceTokens def myVar =" dev " ... сведено к минимуму .... war { filter (ReplaceTokens, tokens: ['@ myVar @': myVar]) } 'Или мне нужно определить мою переменную локально в задаче WAR? –

+1

Наконец-то! Я нашел, где у меня ошибка! Над флагом '-P' для Gradle я могу передавать только переменные, которые не определены в файле' build.gradle'. Я был линией удаления: 'myVar =" dev "' из моей конфигурации градиента и всей работы! Спасибо, @ Ануп! –