Java 从src/main和src/test运行时的类路径差异
我有两个项目,项目1依赖于项目2Java 从src/main和src/test运行时的类路径差异,java,eclipse,gradle,jersey,Java,Eclipse,Gradle,Jersey,我有两个项目,项目1依赖于项目2 project-1 src/main/resources src/test/resources src/functional-test/resources project-2 src/main/resources/ src/test/resources Project-1与Project-2具有项目依赖关系 Project-1是一个web应用程序,当
project-1
src/main/resources
src/test/resources
src/functional-test/resources
project-2
src/main/resources/
src/test/resources
Project-1与Project-2具有项目依赖关系
Project-1是一个web应用程序,当我启动tomcat时,它会从类路径中找到applicationContext.xml并加载Springbeans
如果我启动tomcat服务器并通过浏览器点击服务,一切正常,但当我运行jersey tests时,应用程序上下文不会加载。
当我运行tomcat时,它会在Project-1的src/main/resources/中查找应用程序上下文并加载bean
Project-1 applicationContext.xml引用Project-2 src/main/resources/中使用Project-2中属性文件的xml
当我将Project-1src/main/resources的内容复制到Project-1src/test/resources中,并对Project-2执行相同的操作时,此问题已修复。
现在我在创建名为“emf”的bean时出错
Project-2中的xml文件包含
<bean id="emf"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
< bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter" />
...
...
</bean>
在启动tomcat时,它怎么可能在类路径上,在这种情况下,入口点是src/main/java/
在src/test/java中运行JerseyTest时,它不在类路径中
(如果在正常运行期间有testCompile依赖项不可用,则可能是另一种情况)
类路径是Jvm的一部分。src/main或src/test与之有什么关系?有没有办法修改Junit类路径(仅限于Jvm)以包含从src/main运行vm时的内容?尝试显式创建应用程序上下文,并将其设置为属性
“contextConfig”
,与ResourceConfig类似,但是改用ClassPathXmlApplicationContext
(因为您使用的是xml)@peeskillet真棒。尽管还有两个问题我不得不通过其中一个项目删除不必要的spring asm依赖项,但我认为这不是jersey spring兼容性问题,而是构建路径中存在的spring 3.1.2的问题。我还必须提供javax.el-api依赖项。不确定为什么在运行tomcat和rest服务时不需要这样做,但只有在运行测试时才需要这样做。虽然我将xml和属性文件放在各自项目的src/test中,因为它们在从gradle运行时不在类路径中。可能有办法做到这一点,但我是仍在查看项目层次结构和许多gradle文件。这对我来说已经足够好了,因为我可以指定要从Test加载的文件尝试显式创建应用程序上下文并将其设置为属性“contextConfig”
,使用ResourceConfig,有点像所看到的,但改用ClassPathXmlApplicationContext
(因为您使用的是xml)@peeskillet真棒!虽然还有两个问题我不得不通过其中一个项目删除不必要的spring asm依赖项,但这仍然有效。我认为这不是一个jersey spring兼容性问题,而是构建路径中存在的spring 3.1.2的问题。我还必须提供javax.el-api依赖项。我不确定为什么在运行tomcat并点击rest服务,但仅在运行测试时。虽然我将xml和属性文件放在各自项目的src/test中,因为它们在从gradle运行时不在类路径中。可能有办法做到这一点,但我仍在研究项目层次结构和许多gradle文件。这对于我可以指定从测试加载的文件