我的 webapp 中有一些依赖项已标记为,provided
因为我希望它们由应用服务器提供(可能生产环境在指定版本提供这些依赖项)。当我在本地主机上运行测试或开发时,如何使用例如tomcat7-maven-plugin
目标来模拟它run
?
如果不手动复制罐子,我看不到任何方法。我可以看到如何使用test
类路径 - 我正在尝试做的事情有问题吗?
我的 webapp 中有一些依赖项已标记为,provided
因为我希望它们由应用服务器提供(可能生产环境在指定版本提供这些依赖项)。当我在本地主机上运行测试或开发时,如何使用例如tomcat7-maven-plugin
目标来模拟它run
?
如果不手动复制罐子,我看不到任何方法。我可以看到如何使用test
类路径 - 我正在尝试做的事情有问题吗?
好的,我找到了一种让它工作的方法——这是合理的,但存在重复的依赖信息和一个神奇的配置文件......我觉得 tomcat7-maven-plugin 应该提供一种方法,使提供的依赖项在运行时的容器。
添加一个在tomcat插件运行时激活的配置文件,并将具有provided
范围的依赖项添加compile
到该配置文件,例如。
... in project pom ...
<dependencies>
<dependency>
<groupId>com.mycompany</groupId>
<artifactId>my-provided-artifact</artifactId>
<version>1.2.3</version>
<scope>provided</scope>
</dependency>
</dependencies>
...
<profiles>
<profile>
<!-- profile activated as cli param when tomcat7 plugin runs -->
<id>tomcat</id>
<dependencies>
<dependency>
<groupId>com.mycompany</groupId>
<artifactId>my-provided-artifact</artifactId>
<version>1.2.3</version>
<scope>compile</scope>
</dependency>
</dependencies>
</profile>
</profiles>
例如,我使用这个:
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.0</version>
<configuration>
<path>/myApp</path>
</configuration>
<dependencies>
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>11.2.0.3</version>
</dependency>
</dependencies>
</plugin>
然后还使用提供的再次包含依赖项。