首页 文章

运行Tomcat Maven插件并添加了项目提供的依赖项

提问于
浏览
0

需要在这个方向指向正确的方向,但是如果我添加一个未包含在tomcat提供的依赖项集中的"provided"依赖项,则从eclipse中运行 tomcat7:run 失败,并且在提供的范围jar中使用 classnotfoundexception .

它需要“提供”,因为它是一个来自我运行mvn安装的单独项目的自定义jar,用于 生产环境 我将jar复制到$ CATALINA_BASE / shared目录,以便它可以跨应用程序/ webapps使用(作为单例) .

<dependency>
        <groupId>IndexFileAccessTracker</groupId>
        <artifactId>IndexFileAccessTracker</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <scope>provided</scope>
    </dependency>

我看到的唯一方法(我对Maven和Tomcat7插件的了解有限)是在从Eclipse中的插件运行tomcat时将范围更改为 compile ,然后在运行 package 目标时将范围更改回 provided .

有解决方案吗?我尝试将依赖项添加到tomcat maven插件中(将主maven依赖项保持为 provided 但是找不到相同的类错误:

<!-- For Maven Tomcat Plugin -->
        <plugin>
            <groupId>org.apache.tomcat.maven</groupId>
            <artifactId>tomcat7-maven-plugin</artifactId>
            <version>2.2</version>
            <configuration>
                <path>/CounterWebApp</path>
            </configuration>
            <dependencies>
                <dependency>
                    <groupId>IndexFileAccessTracker</groupId>
                    <artifactId>IndexFileAccessTracker</artifactId>
                    <version>0.0.1-SNAPSHOT</version>
                    <scope>compile</scope>
                </dependency>
            </dependencies>
        </plugin>

同样,它必须在主Maven依赖项中是 provided ,因为我不希望它包含在已部署的WAR中 .

2 回答

  • 0

    tomcat7-maven-plugin及其 run 目标

    需要在范围内对工件进行依赖性解析:test

    编译类路径上的Everythig也在测试类路径上 . 这就是为什么它与范围 compile 一起使用 .

    因此,您的案例中的解决方案是将您的依赖关系标记为 test 甚至(imo)在语义上是正确的 .

    这将使库在本地测试时可用,但不在最终工件中 .

  • 0

    使用配置文件解决,类似于https://stackoverflow.com/a/5951630

    ...
    </dependencies>
    <profiles>
    <profile>
        <id>runineclipse</id>
        <dependencies>
            <dependency>
                <groupId>IndexFileAccessTracker</groupId>
                <artifactId>IndexFileAccessTracker</artifactId>
                <version>0.0.1-SNAPSHOT</version>
                <scope>compile</scope>
            </dependency>
        </dependencies>
    </profile>  
    </profiles>
    <build>
    ...
    

    然后在我的运行/调试配置中将 runineclipse 添加到 Profiles: 框中 . (另请注意,要完成调试步骤,我必须手动将项目添加到“源”选项卡 . )

    构建配置与 Goals: 框中的 package 相同;并且我将原始依赖项保留为范围 provided .

相关问题