powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / SpringBoot как перекрыть файл properties в jar-е
7 сообщений из 7, страница 1 из 1
SpringBoot как перекрыть файл properties в jar-е
    #39596286
Maxifly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В resources tcnm есть два файла properies.
В конфигурационном классе они уазаны как источники свойств:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
@Configuration
@PropertySource({
        "classpath:bot.properties",
        "classpath:application.properties"
})
public class AppConfig {

    @Value("${bot.username}")
    String botUserName;

    @Value("${bot.token}")
    String botToken;
...



После сборки файла properies попадают в jar - ник

Запускаю
Код: plaintext
java -jar kuku-0.0.1-SNAPSHOT.jar

Работает
Подкладываю в каталог с jar-ником файл bot.properties с другими данными, снова запускаю - берет данные из файла, лежащего в jar

Пробовал в запуск добавлять поочередно разные ключи:
-Dspring.config.location=.
-Dspring.config.location=./bot.properties
-classpath .

с тем же эффектом.

Подскажите, что я делаю не так?



Люблю галеры - работящий коллектив, романтика мужского труда. Стоишь на мостике в пене брызг и эдак поворотясь:
- Голубчик! Утроить количество ударов - Али-паша уходит...
...
Рейтинг: 0 / 0
SpringBoot как перекрыть файл properties в jar-е
    #39596504
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
SpringBoot как перекрыть файл properties в jar-е
    #39596505
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maxifly,
Если проект на maven, то можно так:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <configuration>
                    <archive>
                        <manifest>
                            <addClasspath>true</addClasspath>
                            <mainClass>com.fortebank.ptpkaspi.ws.Main</mainClass>
                        </manifest>
                    </archive>
                    <excludes>
                        <exclude>application.properties</exclude>
                        <exclude>bot.properties</exclude>
                    </excludes>
                </configuration>
            </plugin>



Тогда ваши properties файлы не будут компилироваться в jar-ник.
Вы их сможете положить рядом и они нормально будут подхватываться classloader'ом
...
Рейтинг: 0 / 0
SpringBoot как перекрыть файл properties в jar-е
    #39596559
pavel_nv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaxiflyПробовал в запуск добавлять поочередно разные ключи:
-Dspring.config.location=.
-Dspring.config.location=./bot.properties
-classpath .

Если хочешь переопределять, то наверное на @PropertySource с жесткой ссылкой лучше не завязываться, пусть будет в application.properties, или разбить его не несколько файлов, и юзать:
Код: java
1.
-Dspring.config.name=application,bot




Либо юзать алиас ${configLocation} и его переопределять при запуске
...
Рейтинг: 0 / 0
SpringBoot как перекрыть файл properties в jar-е
    #39597151
Maxifly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pavel_nv,

Чего-то все равно не вышло ничего.

стер @PropertySource
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
@Configuration
//@PropertySource({
//        "classpath:bot.properties",
//        "classpath:application.properties"
//})
@EnableCaching
@EnableScheduling
public class AppConfig {
    private Logger logger = LoggerFactory.getLogger(AppConfig.class);

    @Value("${bot.username}")
    String botUserName;

    @Value("${bot.token}")
    String botToken;

    @Value("${sheet.id}")
    String sheetId;
    @Value("${sheet.range}")
    String sheetRange;

    @Value("${prices.cache.flush.delay}")
    String delay;


    @Bean()
    public SimpleBot simpleBot() {
        SimpleBot sb = new SimpleBot();
        logger.debug("Delay: " + delay);
        logger.debug("BotToken: " + this.botToken);
        logger.debug("BotUserName: " + this.botUserName);
        sb.setBot_Token(this.botToken);
        sb.setBot_Username(this.botUserName);
        return sb;
    }

...

и
@SpringBootApplication
public class IerBotApplication {
    static{
		ApiContextInitializer.init();
	}
	public static void main(String[] args) {
		ApplicationContext ctx = new AnnotationConfigApplicationContext(AppConfig.class);

		SimpleBot bot = (SimpleBot) ctx.getBean("simpleBot");
		
               TelegramBotsApi telegramBotsApi = new TelegramBotsApi();
		try {
			telegramBotsApi.registerBot(bot);
		} catch (TelegramApiException e) {
			e.printStackTrace();
		}


	}




собираю, запускаю
Код: plaintext
1.
2.
3.
4.
F:\test>java -Dspring.config.location=classpath:/application.properties,classpath:/bot.properties  -jar ier_bot-0.0.1-SNAPSHOT.jar
2018-02-06 01:23:45,492 [DEBUG][main            ][maxifly.ier_bot.config.AppConfig] - Delay: ${prices.cache.flush.delay}
2018-02-06 01:23:45,492 [DEBUG][main            ][maxifly.ier_bot.config.AppConfig] - BotToken: ${bot.token}
2018-02-06 01:23:45,492 [DEBUG][main            ][maxifly.ier_bot.config.AppConfig] - BotUserName: ${bot.username}

application.properties и bot.properties лежат как в jar-нике, так и в корне каталога изкотрого я запускаю приложение.
...
Рейтинг: 0 / 0
SpringBoot как перекрыть файл properties в jar-е
    #39597171
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maxifly,
Так правильно.
Они будут в jar-нике пока системе сборки не скажешь, что их не надо туда паковать.
Ни к spring'у, ни к java это отношение не имеет.
Только к системе сборки.
В ней надо указать, что не надо паковать некоторые ресурсы.
...
Рейтинг: 0 / 0
SpringBoot как перекрыть файл properties в jar-е
    #39597219
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maxifly,

Можно запаковать несколько конфигов в один JAR-ник и переключаться между ними (через профили см. выше - 21165466 )

например, профили обычно применяются для переключения настроек между различными средами,
например, тестовая стенд и продуктив, можно добавить 3-ю - девелоперская (напр., с включенным DEBUG-логгированием).

переключить можно, как в коде:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
public static void main(String[] args) throws Exception {
    new SpringApplicationBuilder()
        .sources(MyApplication.class)
        .profiles("test")          // переключились на application-test.properties
        //.profiles("production")  // переключились на application-production.properties
        //.profiles("development") // переключились на application-development.properties
        .run(args);
}


через параметр в основном конфиге:
Код: java
1.
spring.profiles.active=test


либо через -D опцию:
Код: java
1.
-Dspring.profiles.active=test


можно перечислять их через запятую.

application.properties - основной конфиг (родительский), в нем определены все основные настройки приложения
настройки основного конфига автоматом наследуются профильным конфигом.
в профильных конфигах можно переопределять настройки из основго конфига.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / SpringBoot как перекрыть файл properties в jar-е
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]