Почему servlet-api.jar меняет свой статус с тестового на компилируемый?
Это то, что я имею в pom.xml
:
<dependency>
<groupId>com.sun.jersey.jersey-test-framework</groupId>
<artifactId>jersey-test-framework-grizzly</artifactId>
<version>1.4</version>
<scope>test</scope>
</dependency>
Это то, что я вижу после mvn --debug war:war
:
[...]
[DEBUG] com.sun.jersey.jersey-test-framework:jersey-test-framework-grizzly:jar:1.4:test
[DEBUG] com.sun.jersey.jersey-test-framework:jersey-test-framework-core:jar:1.4:test
[DEBUG] org.glassfish:javax.servlet:jar:3.0-b66:test
[DEBUG] com.sun.grizzly:grizzly-servlet-webserver:jar:1.9.18-i:test
[DEBUG] com.sun.grizzly:grizzly-http:jar:1.9.18-i:test
[DEBUG] com.sun.grizzly:grizzly-framework:jar:1.9.18-i:test
[DEBUG] com.sun.grizzly:grizzly-rcm:jar:1.9.18-i:test
[DEBUG] com.sun.grizzly:grizzly-portunif:jar:1.9.18-i:test
[DEBUG] com.sun.grizzly:grizzly-http-servlet:jar:1.9.18-i:test
[DEBUG] com.sun.grizzly:grizzly-utils:jar:1.9.18-i:test
[DEBUG] javax.servlet:servlet-api:jar:2.5:compile
[...]
Обратите внимание на последнюю строчку. Почему нет "test"
, но "compile"
?
пс. На самом деле это очень странно. Это мой полный pom.xml
(извините, это не коротко):
[...]
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.7</version> <!-- 10 Sep 2010 -->
<scope>test</scope>
</dependency>
<dependency>
<groupId>xom</groupId>
<artifactId>xom</artifactId>
<version>1.2.5</version> <!-- 13 Oct 2010 -->
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-all</artifactId>
<version>1.8.5</version> <!-- 9 Oct 2010 -->
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-io</artifactId>
<version>1.3.2</version> <!-- 9 Oct 2010 -->
<scope>test</scope>
</dependency>
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>1.6.2</version> <!-- 12 Oct 2010 -->
</dependency>
<dependency>
<groupId>commons-httpclient</groupId>
<artifactId>commons-httpclient</artifactId>
<version>3.1</version> <!-- 2 Nov 2010 -->
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-server</artifactId>
<!-- version see below in dependencyManagement section -->
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-client</artifactId>
<!-- version see below in dependencyManagement section -->
</dependency>
<dependency>
<groupId>com.sun.jersey.jersey-test-framework</groupId>
<artifactId>jersey-test-framework-grizzly</artifactId>
<!-- version see below in dependencyManagement section -->
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<!-- version see below in dependencyManagement section -->
</dependency>
<dependency>
<groupId>org.apache.openejb</groupId>
<artifactId>openejb-ejbd</artifactId>
<!-- version see below in dependencyManagement section -->
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-jdk14</artifactId>
<!-- version see below in dependencyManagement section -->
</dependency>
<dependency>
<groupId>hsqldb</groupId>
<artifactId>hsqldb</artifactId>
<!-- version see below in dependencyManagement section -->
</dependency>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>6.0</version> <!-- 9 Oct 2010 -->
<scope>provided</scope>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-core</artifactId>
<version>${jersey.version}</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-server</artifactId>
<version>${jersey.version}</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-client</artifactId>
<version>${jersey.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.sun.jersey.jersey-test-framework</groupId>
<artifactId>jersey-test-framework-grizzly</artifactId>
<version>${jersey.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>${hibernate.version}</version>
</dependency>
<dependency>
<groupId>org.apache.openejb</groupId>
<artifactId>openejb-ejbd</artifactId>
<version>3.1.3</version> <!-- 26 October 2010 -->
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-jdk14</artifactId>
<version>1.4.2</version> <!-- 29 oct 2010 -->
</dependency>
<dependency>
<groupId>hsqldb</groupId>
<artifactId>hsqldb</artifactId>
<version>1.8.0.10</version> <!-- 12 October 2010 -->
<scope>test</scope>
</dependency>
</dependencies>
</dependencyManagement>
[...]
Вот как maven-war-plugin
настроен:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.0</version>
<configuration>
<archive>
<manifestEntries>
<SCM-Revision>${buildNumber}</SCM-Revision>
</manifestEntries>
</archive>
</configuration>
</plugin>
2 ответа
Вот что я сделал, чтобы решить проблему:
[...]
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jsp-api</artifactId>
<version>2.0</version>
<scope>provided</scope>
<exclusions>
<exclusion>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
</exclusion>
</exclusions>
</dependency>
[...]
Это очень очень странно, я не получаю такой же вывод при запуске mvn
с --debug
:
$ mvn --debug compile... [DEBUG] com.sun.jersey.jersey-test-framework: jersey-test-framework-grizzly:jar:1.4: тест [DEBUG] com.sun.jersey.jersey-test-framework:jersey-test-framework-core:jar:1.4: тест [DEBUG] com.sun.jersey: сервер-джерси:jar:1.4: тест [DEBUG] com.sun.jersey: ядро jersey:jar:1.4:test [DEBUG] asm:asm:jar:3.1:test [DEBUG] com.sun.jersey: клиент-джерси:jar:1.4:test [DEBUG] org.glassfish:javax.servlet:jar:3.0-b66:test [DEBUG] com.sun.grizzly:grizzly-servlet-webserver:jar:1.9.18-i: тест [DEBUG] com.sun.grizzly:grizzly-http:jar:1.9.18-i: тест [DEBUG] ком.sun.grizzly:grizzly-framework:jar:1.9.18-i: тест [DEBUG] com.sun.grizzly:grizzly-rcm:jar:1.9.18-i: тест [DEBUG] com.sun.grizzly: гризли- portunif: jar: 1.9.18-i: test [DEBUG] com.sun.grizzly: grizzly-http-servlet: jar: 1.9.18-i: test [DEBUG] com.sun.grizzly: grizzly-utils: jar: 1.9.18-i: test [DEBUG] javax.servlet: servlet-api: jar:2.5: test...
Что согласуется с dependency:tree
:
$ mvn зависимость: дерево [INFO] Сканирование проектов... ... [INFO] \- com.sun.jersey.jersey-test-framework: джерси-test-framework-grizzly:jar:1.4: тест [INFO] +- com.sun.jersey.jersey-test-framework:jersey-test-framework-core:jar:1.4: тест [ИНФО] | +- com.sun.jersey: джерси-сервер:jar:1.4: тест [ИНФО] | | +- com.sun.jersey:jer-core:jar:1.4: тест [ИНФО] | | \- asm:asm:jar:3.1: тест [ИНФО] | +- com.sun.jersey: клиент-джерси:jar:1.4: тест [ИНФО] | \- org.glassfish:javax.servlet:jar:3.0-b66: тест [INFO] \- com.sun.grizzly:grizzly-servlet-webserver:jar:1.9.18-i: тест [INFO] +- com.sun.grizzly:grizzly-http:jar:1.9.18-i:test [ИНФО] | +- com.sun.grizzly:grizzly-framework:jar:1.9.18-i: тест [ИНФО] | +- com.sun.grizzly:grizzly-rcm:jar:1.9.18-i: тест [ИНФО] | \- com.sun.grizzly:grizzly-portunif:jar:1.9.18-i: тест [INFO] +- com.sun.grizzly:grizzly-http-servlet:jar:1.9.18-i: тест [ИНФО] | \- com.sun.grizzly:grizzly-utils:jar:1.9.18-i: тест [INFO] \- javax.servlet: сервлет-API: jar:2.5: тест...
servlet-api
Артефакт имеет test
сфера как и ожидалось.
У тебя есть servlet-api
объявлен как зависимость с compile
сфера где-то? Это единственный способ воспроизвести.
Обновление: я воспроизвел вывод с mvn --debug
после вставки всех зависимостей, предоставленных вами. Тем не менее, я не знаю, как интерпретировать этот вывод, который печатается, когда maven-compiler-plugin
выполнен. Также обратите внимание, что это отличается от dependency:tree
:
$ mvn зависимость: дерево [INFO] Сканирование проектов...... [INFO] --- плагин maven-dependency-plugin:2.1: дерево (default-cli) @ Q4098082 --- [INFO] com.stackru:Q4098082:jar:1.0-SNAPSHOT [INFO] +- junit:junit:jar:4.7: тест [INFO] +- xom:xom:jar:1.2.5: компилировать [ИНФО] | +- xml-apis:xml-apis:jar:1.3.03: компилировать [ИНФО] | +- xerces:xercesImpl:jar:2.8.0: компилировать [ИНФО] | \- xalan:xalan:jar:2.7.0: компилировать [INFO] +- org.mockito:mockito-all:jar:1.8.5: тест [INFO] +- org.apache.commons:commons-io:jar:1.3.2:test [INFO] +- joda-time:joda-time:jar:1.6.2: компилировать [INFO] +- commons-httpclient:commons-httpclient:jar:3.1: компилировать [ИНФО] | +- commons-logging:commons-logging:jar:1.0.4: компилировать [ИНФО] | \- commons-codec:commons-codec:jar:1.2: компилировать [INFO] +- com.sun.jersey: сервер-джерси:jar:1.4: компилировать [ИНФО] | +- com.sun.jersey:jersey-core:jar:1.4: компилировать [ИНФО] | \- asm:asm:jar:3.1: компилировать [INFO] +- com.sun.jersey: клиент-джерси:jar:1.4: тест [INFO] + - com.sun.jersey.jersey-test-framework: джерси-test-framework-grizzly:jar:1.4: тест [ИНФО] | +- com.sun.jersey.jersey-test-framework:jersey-test-framework-core:jar:1.4: тест [ИНФО] | | \- org.glassfish:javax.servlet:jar:3.0-b66: тест [ИНФО] | \- com.sun.grizzly:grizzly-servlet-webserver:jar:1.9.18-i:test [ИНФО] | +- com.sun.grizzly:grizzly-http:jar:1.9.18-i: тест [ИНФО] | | +- com.sun.grizzly:grizzly-framework:jar:1.9.18-i: тест [ИНФО] | | +- com.sun.grizzly:grizzly-rcm:jar:1.9.18-i: тест [ИНФО] | | \- com.sun.grizzly:grizzly-portunif:jar:1.9.18-i: тест [ИНФО] | +- com.sun.grizzly:grizzly-http-servlet:jar:1.9.18-i:test [ИНФО] | | \- com.sun.grizzly:grizzly-utils:jar:1.9.18-i: тест [ИНФО] | \ - javax.servlet: servlet-api: jar:2.5: test [INFO] + - org.hibernate: hibernate-entitymanager:jar:3.5.6-Final: компилировать [ИНФО] | +- org.hibernate:hibernate-core:jar:3.5.6-Final: компилировать [ИНФО] | | +- antlr:antlr:jar:2.7.6: компилировать [ИНФО] | | +- commons-collection: commons-collection: jar: 3.1: компилировать [ИНФО] | | +- dom4j:dom4j:jar:1.6.1: компилировать [ИНФО] | | \- javax.transaction:jta:jar:1.1: компилировать [ИНФО] | + - org.hibernate: hibernate-аннотации:jar:3.5.6-Final: компилировать [ИНФО] | | \- org.hibernate:hibernate-commons-annotations:jar:3.2.0.Final:compile [ИНФО] | +- cglib:cglib:jar:2.2: компилировать [ИНФО] | +- javassist:javassist:jar:3.9.0.GA: компилировать [ИНФО] | +- org.hibernate.javax.persistence:hibernate-jpa-2.0-api:jar:1.0.0.Final:compile [ИНФО] | \- org.slf4j:slf4j-api:jar:1.5.8: скомпилировать [INFO] +- org.apache.openejb:openejb-ejbd:jar:3.1.3: тест [ИНФО] | +- org.apache.openejb:javaee-api:jar:5.0-3: тест [ИНФО] | +- org.apache.openejb:openejb-core:jar:3.1.3: тест [ИНФО] | | +- log4j:log4j:jar:1.2.12: тест [ИНФО] | | +- org.apache.openejb:ejb31-api-экспериментальный: jar: 3.1.3: тест [ИНФО] | | +- org.apache.openejb:openejb-api:jar:3.1.3: тест [ИНФО] | | +- org.apache.openejb:openejb-javaagent:jar:3.1.3: тест [ИНФО] | | +- org.apache.openejb:openejb-jee:jar:3.1.3: тест [ИНФО] | | | +- org.codehaus.woodstox:wstx-asl:jar:3.2.0:test [ИНФО] | | | | \- stax:stax-api:jar:1.0.1: тест [ИНФО] | | | \- com.sun.xml.bind:jaxb-impl:jar:2.1.9:test [ИНФО] | | +- commons-cli:commons-cli:jar:1.1: тест [ИНФО] | | +- org.apache.activemq:activemq-ra:jar:5.3.1: тест [ИНФО] | | +- org.apache.activemq:activemq-core:jar:5.3.1: тест [ИНФО] | | | +- commons-logging:commons-logging-api:jar:1.1: тест [ИНФО] | | | +- org.apache.geronimo.specs:geronimo-jms_1.1_spec:jar:1.1.1: тест [ИНФО] | | | +- org.apache.activemq:activeio-core:jar:3.1.2: тест [ИНФО] | | | | \- org.apache.geronimo.specs:geronimo-j2ee-management_1.1_spec:jar:1.0.1: тест [ИНФО] | | | +- org.apache.activemq:kahadb:jar:5.3.1: тест [ИНФО] | | | +- org.apache.activemq.protobuf:activemq-protobuf:jar:1.0:test [ИНФО] | | | +- org.apache.geronimo.specs:geronimo-j2ee-management_1.0_spec:jar:1.0: тест [ИНФО] | | | \- commons-net:commons-net:jar:2.0: тест [ИНФО] | | +- org.apache.openjpa:openjpa:jar:1.2.1: тест [ИНФО] | | | +- net.sourceforge.serp:serp:jar:1.13.1: тест [ИНФО] | | | +- commons-lang:commons-lang:jar:2.1: тест [ИНФО] | | | \- commons-pool:commons-pool:jar:1.3: тест [ИНФО] | | +- org.apache.geronimo.components:geronimo-соединитель: jar:2.1: тест [ИНФО] | | + - org.apache.geronimo.components: geronimo -action:jar:2.1: тест [ИНФО] | | +- org.objectweb.howl: вой:jar:1.0.1-1: тест [ИНФО] | | +- org.apache.geronimo.javamail:geronimo-javamail_1.4_mail:jar:1.2: тест [ИНФО] | | +- org.apache.xbean:xbean-asm-shaded:jar:3.7:test [ИНФО] | | + - org.apache.xbean: затенено искривлением бобов: jar: 3.7: тест [ИНФО] | | + - org.apache.xbean: xbean-рефлекс: jar: 3.7: тест [ИНФО] | | + - org.apache.xbean: xbean-naming:jar:3.7:test [ИНФО] | | +- org.apache.openejb:commons-dbcp-all:jar:1.3-r699049: тест [ИНФО] | | +- org.codehaus.swizzle:swizzle-stream:jar:1.0.1: тест [ИНФО] | | +- wsdl4j:wsdl4j:jar:1.6.1: тест [ИНФО] | | \ - кварц: кварц: банка:1.5.2: тест [ИНФО] | + - org.apache.openejb: openejb-сервер: jar: 3.1.3: тест [ИНФО] | + - org.apache.openejb: openejb-загрузчик: jar: 3.1.3: тест [ИНФО] | \- org.apache.openejb:openejb-клиент: jar: 3.1.3: тест [INFO] +- org.slf4j:slf4j-jdk14:jar:1.4.2: компилировать [INFO] +- hsqldb:hsqldb:jar:1.8.0.10: тест [INFO] \- javax:javaee-api:jar:6.0: предоставляется...
Вышесказанное является моей ссылкой для анализа объема зависимостей, и это выглядит правильно. Я не знаю почему maven-compiler-plugin
выводит другой результат в режиме отладки, я не знаю, ожидается ли это, я никогда не обращаю внимание на вывод.
Дополнительное замечание javax.servlet:servlet-api:jar:2.5
находится на (огромном) тестовом пути во время compiler:testCompile
выполнение.
Так что, хотя у меня нет полного объяснения, я не могу обнаружить никаких побочных эффектов.