在tomcat7-maven-plugin目标中使用“提供的”类路径

时间:2013-07-02 13:36:49

标签: maven tomcat dependencies classpath tomcat7

我的webapp中有一些我已标记为provided的依赖项,因为我希望它们由appserver提供(可能是生产环境在指定版本中提供这些依赖项)。当我在我的localhost上运行测试或开发时,如何使用tomcat7-maven-plugin run这样的test目标来模拟它?

如果不手动复制罐子,我看不到任何方法。我可以看到如何使用{{1}}类路径 - 我正在尝试做什么问题?

2 个答案:

答案 0 :(得分:2)

好的,我找到了一种方法让它工作 - 这是合理的,但是依赖信息和魔术配置文件的重复......我觉得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>

答案 1 :(得分:0)

我使用例如:

<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>

然后再使用提供的内容再次包含依赖项。