2016-04-13 3 views
0

Я новичок в Maven.Как выполнить задачу для разных профилей с помощью maven

Я хочу выполнить подключение к базе данных для разных пользователей, поэтому проблема заключается в том, где я должен предоставить это соединение JDBC и как обеспечить это соединение для разных пользователей?

Я знаю, как предоставлять профили для разных пользователей, но где я должен выполнять подключение к базе данных и как он вызван?

+2

Что именно вы подразумеваете под «выполнением подключения к базе данных»? Maven - это инструмент построения, что должно произойти с данными из базы данных во время сборки maven? – f1sh

+0

По какой причине вам необходимо выполнить подключение к базе данных? Для ваших тестов? –

+0

@Nicolas yes Я хочу выполнить для таких тестов, как имя пользователя и пароль. поэтому, где я должен это делать, я не понимаю. пожалуйста, помогите мне в этом. – ketan

ответ

0

Лучший подход сделает ваши свойства подключения к базе данных (например, имя пользователя/пароль, url и т. Д.) Внешним. В рамках профиля вы можете определить для каждого пользователя значения для свойств и использовать фильтрацию ресурсов maven для их установки.

В вашей Maven проект, который вы бы, например, иметь конфигурационный каталог (в src/config/settings.prp), который содержит, например, следующие данные:

userName = ${userName} 
password = ${password} 
db-driver = ${dbDriver} 
db-url = ${dbUrl} 

в пределах ПОМ вы бы

<project ...> 
    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-resources-plugin</artifactId> 
       <version>2.7</version> 
       <executions> 
        <execution> 
         <id>filter-db-settings</id> 
         <goals> 
          <goal>copy-resources</goal> 
         </goals> 
         <configuration> 
          <outputDirectory>${project.build.directory}/config</outputDirectory> 
          <resources> 
           <resource> 
            <directory>${project.basedir}/src/config</directory> 
           </resource> 
           <filtering>true</filtering> 
          </resources> 
         </configuration> 
        </execution> 
       </executions> 
      </plugin> 
     <plugins> 
    </build> 

    <profiles> 
     <profile> 
      <id>user-A</id> 
      <properties> 
       <userName>userA</userName> 
       <password>secret</password> 
       <dbDriver>com.driver.db</dbDriver> 
       <dbUrl>jdbc://db-url</dbUrl> 
      </properties> 
     </profile> 
    <profiles> 
</project> 

плагином будет фильтровать файлы в src/config и заменить заполнители maven значениями, указанными в вашем профиле. Поскольку в профиле содержится пароль, вы можете перенести его на свой settings.xml, чтобы он не был проверен с самим проектом, возможно, подвергая пароль нежелательным сторонам.

ВНИМАНИЕ: Не проверял плагин наверху, поэтому может содержать небольшие ошибки.

Лучше всего поместить файл недвижимости NOT в пределах произведенного артефакта. Делая это, вы получаете свободу использовать один и тот же артефакт для разных пользователей, и единственное, что вам нужно изменить, это свойства во внешнем файле свойств (который будет предоставлен пользователю рядом с артефактом).

В следующей статье объясняется, как вы можете экстеризировать свойства с помощью пружины Externalized Configuration.

+0

Дайте мне пример, как я могу написать свой файл pom.xml для разных пользователей и как я могу выполнять задачи, связанные с базой данных для этого конкретного пользователя? – ketan

+0

Что вы подразумеваете под базовыми задачами? – uniknow

+0

Это также может быть полезно: [maven различные файлы свойств для разных профилей] (http://stackoverflow.com/questions/8325366/maven-different-property-files-for-different-profiles?rq=1) – uniknow