Я думаю, что это возможно. На самом деле, начиная с версии 2.0.9, Maven использует порядок POM для создания пути к классам, поэтому вы можете манипулировать им сейчас. И если вы объедините это с Dependency Scope , то будет возможно достичь того, чего вы хотите. С практической точки зрения, если вы поместите зависимость javaee
GlassFish (с test scope) перед зависимостью javaee-api
, первая должна быть помещена перед последней в пути к классу теста таким образом используется модульными тестами, в то время как последний будет использоваться при компиляции. Теоретически, это должно работать, но это довольно хрупко, поэтому его нужно тщательно документировать.
Что-то в этом роде (с вымышленной банкой GFv3):
<dependencies>
<dependency><!-- this one will be first on the test classpath -->
<groupId>org.glassfish</groupId>
<artifactId>javaee</artifactId>
<version>6.0</version>
<scope>test</scope>
<dependency>
<dependency><!-- this one will be used during compile -->
<groupId>javax.javaee-api</groupId>
<artifactId>javaee-api</artifactId>
<version>6.0</version>
<scope>provided</scope>
<dependency>
...
</dependencies>