Сборка для местного производства и производства в IntelliJ с использованием Maven - PullRequest
3 голосов
/ 31 октября 2011

У меня есть простое приложение Spring mvc, использующее maven с intellij.

Как вы собираетесь создавать отдельные файлы для производства и разработки?

например, сказать, что я хочу установить производствои строка подключения для разработки mysql для nhibernate?

Как это сделать, чтобы при сборке для загрузки информации о конфигурации использовался правильный файл?(и какой-нибудь совет относительно соглашений об именовании для файлов?)

Ответы [ 2 ]

2 голосов
/ 31 октября 2011

Существует множество способов сделать это.

В общем случае такие вещи, как строки подключения к БД, могут входить в файлы свойств и заменяться в файлах конфигурации Spring XML с помощью PropertyPlaceholderConfigurer . Одна из распространенных хитростей заключается в создании пользовательской реализации, которая ищет параметр запуска -D, имя пользователя, имя компьютера и т. Д., Которые можно использовать для определения, какой файл свойств фактически использовать.

Тот же трюк можно использовать и для файлов конфигурации Spring, создавая реализацию XmlWebApplicationContext (? Я никогда не могу вспомнить, что для подкласса), который добавляет / изменяет значение по умолчанию getConfigLocations для добавления, скажем, файлы с указанием имени пользователя или компьютера, -D значения параметра запуска и т. д.

Кстати, вы не используете NHibernate, если вы используете Java, вы используете Hibernate.

Редактировать Подход Брайана - это один из тех «тонн путей», мне просто нравится сохранять его настраиваемым без построения, т. Е. Динамически основываться на произвольных «локальных» условиях и т. Д., Чтобы я мог поменяться местами очень легко.

2 голосов
/ 31 октября 2011

Использование задачи муравья довольно просто для этого.

Сначала создайте пару профилей под <project> в вашем pom:

<profiles>
  <profile>
    <id>build-dev</id>
    <activation>
      <!-- <activeByDefault>true</activeByDefault> -->
      <property>
        <name>env</name>
        <value>dev</value>
      </property>
    </activation>
    <properties>
      <config.name>config.dev.properties</config.name>
    </properties>
  </profile>
  <profile>
    <id>build-prod</id>
    <activation>
      <property>
        <name>env</name>
        <value>prod</value>
      </property>
    </activation>
    <properties>
      <config.name>config.prod.properties</config.name>
    </properties>
  </profile>
</profiles>

Затем используйте maven-antrun-plugin

<plugins>
  <plugin>
    <artifactId>maven-antrun-plugin</artifactId>
    <executions>
      <execution>
        <phase>prepare-package</phase>
        <goals>
          <goal>run</goal>
        </goals>
        <configuration>
          <tasks>
            <delete file="${project.build.outputDirectory}/config.properties"/>
            <copy file="src/main/resources/${config.name}" tofile="${project.build.outputDirectory}/config.properties"/>
            <delete file="${project.build.outputDirectory}/config.dev.properties"/>
            <delete file="${project.build.outputDirectory}/config.prod.properties"/>
          </tasks>
        </configuration>
      </execution>
    </executions>
  </plugin>
</plugins>

Теперь вы просто указываете нужный профиль при запуске mvn.Если вы хотите использовать значение по умолчанию, раскомментируйте и поместите раздел:

<!-- <activeByDefault>true</activeByDefault> -->

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...