Может ли Maven иметь местные свойства проекта? - PullRequest
1 голос
/ 10 октября 2019

У нас есть проект Maven, где каждый разработчик должен использовать свои локальные настройки проекта. Так как они не должны храниться в репозитории Git, мы не можем указать их в файле pom.xml.

Мы решили использовать файл ~ / .m2 / settings.xml, но так как это хранилище файловсвойства для всего пользователя , а не для проекта , они мешают друг другу. Например:

<profiles>

  <profile>
    <id>project1</id>
    <properties>
      <sftp-endpoint>10.201.50.14</sftp-endpoint>
      <sftp-password>secretpass</sftp-password>
    </properties>
  </profile>

  <profile>
    <id>project2</id>
    <properties>
      <sftp-endpoint>12.34.56.78</sftp-endpoint>
      <sftp-password>pencil</sftp-password>
    </properties>
  </profile>

</profiles>

<activeProfiles>
  <activeProfile>project1</activeProfile>
  <activeProfile>project2</activeProfile>
</activeProfiles>

Если я пытаюсь использовать этот файл, когда я работаю над проектом1, я также получаю локальные свойства из проекта2. У них должны быть одинаковые имена, так как от них многое зависит.

Можно ли как-нибудь иметь локальные свойства для проекта в Maven?

Ответы [ 2 ]

1 голос
/ 10 октября 2019

@ Комментарий AnthonyAccioly дал большую подсказку.

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

В pom.xml (хранится в Git) включены общие свойства. Он выглядит следующим образом:

<build>
  <plugins>
    ...
    <plugin>
      <groupId>org.mycompany.mytool</groupId>
      <artifactId>a1-maven-plugin</artifactId>
      <version>1.0.0</version>

      <configuration>
        <localproperties>dev.properties</localproperties>
        <common.prop1>value1</common.prop1>
        <common.prop2>value2</common.prop2>
      </configuration>
      ...
    <plugin>
  <plugins>
<build>

Файл dev.properties (не хранится в Git) выглядит следующим образом:

local.prop3=value3
local.prop4=value4

Таким образом, мой плагин получает общеесвойства из файла pom.xml, хранящегося в Git, а локальные свойства (различающиеся для разных разработчиков) хранятся в файле dev.properties. Простой Java-метод читает файл свойств, используя класс java.util.Properties. Легко.

0 голосов
/ 10 октября 2019
  1. Переменные среды Вы можете использовать скрипт среды для каждой среды, который определяет переменные среды, такие как sftp-endpoint и sftp-password. Эти файлы затем добавляются в .gitignore и распространяются вручную для команды разработчиков. Затем вы можете использовать эти свойства в вашем pom как ${env.VARIABLE_NAME} или ${env}.VARIABLE_NAME

  2. Шифрование пароля Используйте встроенный Maven шифрование пароля

...