Maven: как сохранить зависимость? - PullRequest
3 голосов
/ 28 марта 2012

Я новичок в Maven.Я недавно изучил это, чтобы решить некоторые проблемы с зависимостями, которые у меня возникают с Java и Spring WebApp.Я пробовал Maven на небольшом примере веб-приложения.Веб-приложение использует теги JSTL.Я посчитал необходимым поместить эти теги в pom.xml:

   <dependency>
        <groupId>javax.servlet.jsp.jstl</groupId>
        <artifactId>jstl-api</artifactId>
        <version>1.2-rev-1</version>
    </dependency>

    <dependency>
        <groupId>org.glassfish.web</groupId>
        <artifactId>jstl-impl</artifactId>
        <version>1.2</version>
    </dependency>

Они получают 2 банки, которые мне нужны:

jstl-api-1.2-rev-1.jar
jstl-impl-1.2.jar

НО он также включает ЭТУ банку в моем WEB-INF/ lib, включение которого вызывает все виды ошибок при попытке запустить его в Tomcat 7:

jsp-api-2.1.jar

Есть ли способ, которым я могу переписать свои теги зависимостей, чтобы оставить jsp-api-2.1.jarиз моего WEB-INF / lib?

Спасибо


Исправлено.Спасибо, парни.Кстати, вот как я изменил теги зависимостей для JSTL, чтобы не помещать банку JSP-API в мою библиотеку WEB-INF:

   <dependency>
        <groupId>javax.servlet.jsp.jstl</groupId>
        <artifactId>jstl-api</artifactId>
        <version>1.2-rev-1</version>
        <exclusions>
            <exclusion>
                <groupId>javax.servlet.jsp</groupId>
                <artifactId>jsp-api</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

    <dependency>
        <groupId>org.glassfish.web</groupId>
        <artifactId>jstl-impl</artifactId>
        <version>1.2</version>
        <exclusions>
            <exclusion>
                <groupId>javax.servlet.jsp</groupId>
                <artifactId>jsp-api</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

Мне удалось найти groupID и artifactID на этом сайте https://repository.sonatype.org/index.html#welcome

Ответы [ 2 ]

4 голосов
/ 28 марта 2012

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

<dependency>
  <groupId>org.hibernate</groupId>
  <artifactId>hibernate</artifactId>
  <version>3.2.6.ga</version>
  <exclusions>
    <exclusion>
      <groupId>javax.transaction</groupId>
      <artifactId>jta</artifactId>
    </exclusion>
  </exclusions>
</dependency>

В вашем случае одна (или обе) зависимости, которые вы добавляете, включают ту, которая вам не нужна. Найдите какой, и добавьте раздел исключения.

1 голос
/ 28 марта 2012

Измените область на «предоставлено». EG:

<dependency>
    <groupId>org.glassfish.web</groupId>
    <artifactId>jstl-impl</artifactId>
    <version>1.2</version>
    <scope>provided</scope>
</dependency>

Предоставленная область действия обеспечивает доступность jar для компилятора, но предполагает, что он будет «предоставлен» во время выполнения при запуске кода. В вашем акте он предоставлен Tomcat.

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