вопрос профиля maven

#maven #m2eclipse

#maven #m2eclipse

Вопрос:

Я новичок в Maven, и у меня очень простой вопрос. У меня есть одно приложение J2EE (EAR). Когда я создаю это приложение, я хочу игнорировать некоторую зависимость в папке lib моей war, поскольку эти jars будут предоставляться моим сервером, таким как jboss (все материалы hibernate). Но когда я запускаю этот проект war внутри встроенного сервера jetty, мне нужно, чтобы он находился внутри моей папки lib. Я слышал о профиле maven, который можно использовать для аналогичных целей. Может ли кто-нибудь привести мне пример или некоторые подробности об этом, или есть какой-то другой способ выполнить эту задачу. У меня есть EAR, который содержит модуль ejb (jar) и веб-модуль (war).

Спасибо

Ответ №1:

Укажите свою библиотеку в профиле. Установите <scope>provided</scope> для вашей библиотеки в профиле jboss. Например.:

 <profiles>
    <profile>
        <id>jboss</id><dependencies>
            <dependency>
                      <groupid>...</groupid>
                      <artifactid>...</artifactid>
                      <version>...</version>
                      <scope>provided</scope>
                </dependency>
        </dependencies></profile>
    <profile>
        <id>jetty</id><dependencies>
            <dependency>
                      <groupid>...</groupid>
                      <artifactid>...</artifactid>
                      <version>...</version>
                </dependency>
        </dependencies></profile>
</profiles>
  

Комментарии:

1. Спасибо, для меня это выглядит как хорошее начало. Еще один вопрос, могу ли я также сказать maven использовать diff. ApplicationContext для jboss и jetty. Если да, то как? Извините, что задаю такой глупый вопрос, но я совершенно новичок, и для Maven доступна не очень хорошая книга

2. Я имею в виду, что у меня есть два ApplicationContext, каждый для jboss и jetty. Когда я запускаю свой проект на jetty во время разработки, я хочу, чтобы spring запускал транзакцию, и когда я развертываю свой проект, он использует jndi entitymanager и transaction manager из jboss. Я знаю, что это не очень хороший дизайн, но я не могу изменить его сейчас, на данном этапе, поскольку я работаю над чужим кодом.

3. Вы можете использовать фильтрацию Maven ( maven.apache.org/plugins/maven-resources-plugin/examples /… ). Это настройка свойства. Вы указываете свойства в своем pom.xml целевые файлы и maven устанавливает их во время сборки. Вы можете задать свойства для каждого профиля.

4. Да, я нашел это в одном из блогов, и это потрясающе. Спасибо за всю вашу помощь и советы. Я создаю пример проекта и отлично работает