Это очень очень странно, я не получаю тот же вывод при запуске mvn
с --debug
:
$ mvn --debug compile
...
[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] com.sun.jersey:jersey-server:jar:1.4:test
[DEBUG] com.sun.jersey:jersey-core:jar:1.4:test
[DEBUG] asm:asm:jar:3.1:test
[DEBUG] com.sun.jersey:jersey-client: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
<b>[DEBUG] javax.servlet:servlet-api:jar:2.5:test</b>
...
Что соответствует dependency:tree
:
$ mvn dependency:tree
[INFO] Scanning for projects...
...
[INFO] \- com.sun.jersey.jersey-test-framework:jersey-test-framework-grizzly:jar:1.4:test
[INFO] +- com.sun.jersey.jersey-test-framework:jersey-test-framework-core:jar:1.4:test
[INFO] | +- com.sun.jersey:jersey-server:jar:1.4:test
[INFO] | | +- com.sun.jersey:jersey-core:jar:1.4:test
[INFO] | | \- asm:asm:jar:3.1:test
[INFO] | +- com.sun.jersey:jersey-client:jar:1.4:test
[INFO] | \- org.glassfish:javax.servlet:jar:3.0-b66:test
[INFO] \- com.sun.grizzly:grizzly-servlet-webserver:jar:1.9.18-i:test
[INFO] +- com.sun.grizzly:grizzly-http:jar:1.9.18-i:test
[INFO] | +- com.sun.grizzly:grizzly-framework:jar:1.9.18-i:test
[INFO] | +- com.sun.grizzly:grizzly-rcm:jar:1.9.18-i:test
[INFO] | \- com.sun.grizzly:grizzly-portunif:jar:1.9.18-i:test
[INFO] +- com.sun.grizzly:grizzly-http-servlet:jar:1.9.18-i:test
[INFO] | \- com.sun.grizzly:grizzly-utils:jar:1.9.18-i:test
<b>[INFO] \- javax.servlet:servlet-api:jar:2.5:test</b>
...
Артефакт servlet-api
имеет область действия test
, как и ожидалось.
Есть ли у вас servlet-api
, объявленный как зависимость с областью действия compile
где-нибудь? Это единственный способ воспроизвести.
Обновление: Я воспроизвел вывод с mvn --debug
после вставки всех предоставленных вами зависимостей. Тем не менее, я не знаю, как интерпретировать этот вывод, который печатается при выполнении maven-compiler-plugin
. Также обратите внимание, что он отличается от dependency:tree
:
$ mvn dependency:tree
[INFO] Scanning for projects...
...
[INFO] --- maven-dependency-plugin:2.1:tree (default-cli) @ Q4098082 ---
[INFO] com.stackoverflow:Q4098082:jar:1.0-SNAPSHOT
[INFO] +- junit:junit:jar:4.7:test
[INFO] +- xom:xom:jar:1.2.5:compile
[INFO] | +- xml-apis:xml-apis:jar:1.3.03:compile
[INFO] | +- xerces:xercesImpl:jar:2.8.0:compile
[INFO] | \- xalan:xalan:jar:2.7.0:compile
[INFO] +- org.mockito:mockito-all:jar:1.8.5:test
[INFO] +- org.apache.commons:commons-io:jar:1.3.2:test
[INFO] +- joda-time:joda-time:jar:1.6.2:compile
[INFO] +- commons-httpclient:commons-httpclient:jar:3.1:compile
[INFO] | +- commons-logging:commons-logging:jar:1.0.4:compile
[INFO] | \- commons-codec:commons-codec:jar:1.2:compile
[INFO] +- com.sun.jersey:jersey-server:jar:1.4:compile
[INFO] | +- com.sun.jersey:jersey-core:jar:1.4:compile
[INFO] | \- asm:asm:jar:3.1:compile
[INFO] +- com.sun.jersey:jersey-client:jar:1.4:test
[INFO] +- com.sun.jersey.jersey-test-framework:jersey-test-framework-grizzly:jar:1.4:test
[INFO] | +- com.sun.jersey.jersey-test-framework:jersey-test-framework-core:jar:1.4:test
[INFO] | | \- org.glassfish:javax.servlet:jar:3.0-b66:test
[INFO] | \- com.sun.grizzly:grizzly-servlet-webserver:jar:1.9.18-i:test
[INFO] | +- com.sun.grizzly:grizzly-http:jar:1.9.18-i:test
[INFO] | | +- com.sun.grizzly:grizzly-framework:jar:1.9.18-i:test
[INFO] | | +- com.sun.grizzly:grizzly-rcm:jar:1.9.18-i:test
[INFO] | | \- com.sun.grizzly:grizzly-portunif:jar:1.9.18-i:test
[INFO] | +- com.sun.grizzly:grizzly-http-servlet:jar:1.9.18-i:test
[INFO] | | \- com.sun.grizzly:grizzly-utils:jar:1.9.18-i:test
<b>[INFO] | \- javax.servlet:servlet-api:jar:2.5:test</b>
[INFO] +- org.hibernate:hibernate-entitymanager:jar:3.5.6-Final:compile
[INFO] | +- org.hibernate:hibernate-core:jar:3.5.6-Final:compile
[INFO] | | +- antlr:antlr:jar:2.7.6:compile
[INFO] | | +- commons-collections:commons-collections:jar:3.1:compile
[INFO] | | +- dom4j:dom4j:jar:1.6.1:compile
[INFO] | | \- javax.transaction:jta:jar:1.1:compile
[INFO] | +- org.hibernate:hibernate-annotations:jar:3.5.6-Final:compile
[INFO] | | \- org.hibernate:hibernate-commons-annotations:jar:3.2.0.Final:compile
[INFO] | +- cglib:cglib:jar:2.2:compile
[INFO] | +- javassist:javassist:jar:3.9.0.GA:compile
[INFO] | +- org.hibernate.javax.persistence:hibernate-jpa-2.0-api:jar:1.0.0.Final:compile
[INFO] | \- org.slf4j:slf4j-api:jar:1.5.8:compile
[INFO] +- org.apache.openejb:openejb-ejbd:jar:3.1.3:test
[INFO] | +- org.apache.openejb:javaee-api:jar:5.0-3:test
[INFO] | +- org.apache.openejb:openejb-core:jar:3.1.3:test
[INFO] | | +- log4j:log4j:jar:1.2.12:test
[INFO] | | +- org.apache.openejb:ejb31-api-experimental:jar:3.1.3:test
[INFO] | | +- org.apache.openejb:openejb-api:jar:3.1.3:test
[INFO] | | +- org.apache.openejb:openejb-javaagent:jar:3.1.3:test
[INFO] | | +- org.apache.openejb:openejb-jee:jar:3.1.3:test
[INFO] | | | +- org.codehaus.woodstox:wstx-asl:jar:3.2.0:test
[INFO] | | | | \- stax:stax-api:jar:1.0.1:test
[INFO] | | | \- com.sun.xml.bind:jaxb-impl:jar:2.1.9:test
[INFO] | | +- commons-cli:commons-cli:jar:1.1:test
[INFO] | | +- org.apache.activemq:activemq-ra:jar:5.3.1:test
[INFO] | | +- org.apache.activemq:activemq-core:jar:5.3.1:test
[INFO] | | | +- commons-logging:commons-logging-api:jar:1.1:test
[INFO] | | | +- org.apache.geronimo.specs:geronimo-jms_1.1_spec:jar:1.1.1:test
[INFO] | | | +- org.apache.activemq:activeio-core:jar:3.1.2:test
[INFO] | | | | \- org.apache.geronimo.specs:geronimo-j2ee-management_1.1_spec:jar:1.0.1:test
[INFO] | | | +- org.apache.activemq:kahadb:jar:5.3.1:test
[INFO] | | | +- org.apache.activemq.protobuf:activemq-protobuf:jar:1.0:test
[INFO] | | | +- org.apache.geronimo.specs:geronimo-j2ee-management_1.0_spec:jar:1.0:test
[INFO] | | | \- commons-net:commons-net:jar:2.0:test
[INFO] | | +- org.apache.openjpa:openjpa:jar:1.2.1:test
[INFO] | | | +- net.sourceforge.serp:serp:jar:1.13.1:test
[INFO] | | | +- commons-lang:commons-lang:jar:2.1:test
[INFO] | | | \- commons-pool:commons-pool:jar:1.3:test
[INFO] | | +- org.apache.geronimo.components:geronimo-connector:jar:2.1:test
[INFO] | | +- org.apache.geronimo.components:geronimo-transaction:jar:2.1:test
[INFO] | | +- org.objectweb.howl:howl:jar:1.0.1-1:test
[INFO] | | +- org.apache.geronimo.javamail:geronimo-javamail_1.4_mail:jar:1.2:test
[INFO] | | +- org.apache.xbean:xbean-asm-shaded:jar:3.7:test
[INFO] | | +- org.apache.xbean:xbean-finder-shaded:jar:3.7:test
[INFO] | | +- org.apache.xbean:xbean-reflect:jar:3.7:test
[INFO] | | +- org.apache.xbean:xbean-naming:jar:3.7:test
[INFO] | | +- org.apache.openejb:commons-dbcp-all:jar:1.3-r699049:test
[INFO] | | +- org.codehaus.swizzle:swizzle-stream:jar:1.0.1:test
[INFO] | | +- wsdl4j:wsdl4j:jar:1.6.1:test
[INFO] | | \- quartz:quartz:jar:1.5.2:test
[INFO] | +- org.apache.openejb:openejb-server:jar:3.1.3:test
[INFO] | +- org.apache.openejb:openejb-loader:jar:3.1.3:test
[INFO] | \- org.apache.openejb:openejb-client:jar:3.1.3:test
[INFO] +- org.slf4j:slf4j-jdk14:jar:1.4.2:compile
[INFO] +- hsqldb:hsqldb:jar:1.8.0.10:test
[INFO] \- javax:javaee-api:jar:6.0:provided
...
Выше приведен мой справочник по анализу объема зависимостей, и он выглядит правильно. Я не знаю, почему maven-compiler-plugin
выводит другой результат в режиме отладки, я не знаю, ожидается ли это, я никогда не обращаю внимание на вывод.
Дополнительное замечание: javax.servlet:servlet-api:jar:2.5
находится на (огромном) тестовом пути к классам во время выполнения compiler:testCompile
.
Так что, хотя у меня нет полного объяснения, я не могу обнаружить никаких побочных эффектов.