Почему я не могу активировать профиль Maven2 от другого профиля?

У меня есть мультимодуль проект Maven2, который создает веб-приложение. Приложение подключено к серверу бэкэнда и DB. Существует несколько экземпляров сервера, развернутых в нашей среде, и существуют также несколько бэкенд и экземпляры DB для разработки, UAT, производства, и т.д. Так практически каждой конфигурации приложения нужны эти 3 координаты:

  • сервер фронтенда
  • сервер бэкэнда
  • DB

Я работаю над объединением и автоматизацией конфигурации приложения. Это легко и очевидно представить эти различные конфигурации как профили в Знатоке. Затем я могу создать определенную конфигурацию путем активации одного профиля от каждой группы, например.

mvn -Pserver.Server1,backend.prod,db.uat clean install

Это немного утомительно для ввода и подверженный ошибкам - если определенный сервер неправильно конфигурируется для соединения с неправильным DB, цена может быть высокой. Один очевидный способ зафиксировать это состоял бы в том, чтобы поместить все полезные комбинации профиля в файлы сценария.

Но я думал, что мог быть более умным, чем это путем активации необходимого бэкенда и профиля DB непосредственно от профиля сервера. Профили сервера находятся в основном англичанине, например.


    server.myserver
    
        D:\Programs\jboss-4.2.1.GA
        NightlyBuild
        192.168.1.100
        8080
        ...
        dev02
    

И бэкенд и профили DB находятся в англичанине подмодуля Конфигурации, например.


    db.dev02
    
        
            db
            dev02
        
    
    
        jdbc:oracle:thin:@192.168.0.101:1521:dbdev02
    

Таким образом в теории, начиная с server.myserver представьте устанавливает db свойство к dev02, это должно инициировать активацию db.dev02 профиль в дочернем англичанине. Однако этого не происходит. (Ни если два профиля находятся в том же англичанине, btw). Если я установил свойство из командной строки с

mvn -Ddb=dev02 help:active-profiles

затем профиль активируется, хотя, так по-видимому, я ничего не написал c орфографическими ошибками.

Я пропустил что-то? Там какой-либо другой путь состоит в том, чтобы сделать эту работу?

Я вижу, что там существует подобный вопрос: я могу заставить один профиль знатока активировать другого?
Однако, по моему скромному мнению, это не дубликат - я вижу, что мой подход не работает, и я хотел бы понять почему. (Я считал ссылку, но я, возможно, пропустил что-то очевидное).

16
задан Community 23 May 2017 в 12:32
поделиться

1 ответ

Этой функции просто не существует. Активатор свойств использует входящие свойства, а не заданные профилями (так как иначе он не знал бы, в каком порядке их активировать без более сложной логики).

Решение, которое вы использовали - иметь одинаковые свойства для активации вещей, которые вы хотите делать вместе - это лучшее решение. Я понимаю, что оно не всегда может быть удовлетворительным - в этом случае все, что вы можете сделать, это вернуться к созданию отдельных профилей как можно проще, чтобы вы могли комбинировать их нужными способами в командной строке, не дублируя их.

Выпуск, в котором описана эта возможность: https://issues.apache.org/jira/browse/MNG-3309
Выпуск, посвященный активации свойства: https://issues.apache.org/jira/browse/MNG-2276

19
ответ дан 30 November 2019 в 21:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: