2012-01-25 43 views
2

我有一個Spring3.1/Hibernate3項目,其中應用程序上下文是通過註釋類+組件掃描來構建的。當我使用eclipse構建它時,一切正常,但是使用maven構建它似乎忽略了註釋(沒有注入,服務是空的等)。Maven3不會處理Spring註釋?

我們有編譯器插件,如下所示:

<artifactId>maven-compiler-plugin</artifactId> 
    <version>3.0</version> 
    <configuration> 
     <source>1.5</source> 
     <target>1.5</target> 
    </configuration> 

「主」彈簧應用上下文經由ContextLoaderListener的從相關聯的網絡的項目之一(加載服務/ DAOS等駐留在單獨的共項目「)爲了避免實例化一個上下文每個Web項目(我們有幾個,是人可以質疑,但..),我們使用在本博客中詳述的tecnique: http://blog.springsource.org/2007/06/11/using-a-shared-parent-application-context-in-a-multi-war-spring-application/

這是從web的撕開xml實例化上下文:

<listener> 
    <display-name>ContextLoaderListener</display-name> 
    <listener- class>org.springframework.web.context.ContextLoaderListener</listener-class> 
</listener> 

<context-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value>classpath:beanRefContext.xml</param-value> 
</context-param> 

    <context-param> 
     <param-name>parentContextKey</param-name> 
     <param-value>common.context</param-value> 
    </context-param> 

    <context-param> 
    <param-name>webAppRootKey</param-name> 
    <param-value>SpringHibernate</param-value> 
    </context-param> 

BeanRefContext其位於公共項目看起來是這樣的:

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans  http://www.springframework.org/schema/beans/spring-beans-2.0.xsd"> 

    <bean id="common.context" class="org.springframework.context.support.ClassPathXmlApplicationContext"> 
     <constructor-arg> 
      <list> 
       <value>appContext.xml</value> 
      </list> 
     </constructor-arg> 
    </bean> 

</beans> 

而這在原來的起始和註解配置和組件掃描定義普通的ClassPathXmlApplicationContext:

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xmlns:context="http://www.springframework.org/schema/context" 
     xsi:schemaLocation=" 
      http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
     http://www.springframework.org/schema/context http://www.springframework.org /schema/context/spring-context-3.0.xsd"> 

     <context:annotation-config/> 

    <import resource="persistenceContext.xml" /> 
    <import resource="businessContext.xml" /> 

    <context:component-scan base-package="com.XX.supplierportal.common.spring"> 
     <context:exclude-filter type="regex" expression="com.XX.supplierportal.common.spring.*Test.java"/> 
    </context:component-scan> 
    <context:component-scan base-package="com.XX.supplierportal.userdirectory.incoming"/> 

</beans> 

而且如上所述,在eclipse中,所有東西都可以在eclipse中實例化和共享一個包含服務等的common-applicationContext,並在許多web項目之間共享,然後使用maven構建它,但是上下文會變得不穩定充分,但似乎沒有閱讀註釋。

任何人都知道什麼是缺失的線索?

+0

它可能來自你的Spring配置。請顯示更多代碼:) –

+0

當您使用eclipse時,您是否使用java 1.5或1.6。如果你在eclipse中使用1.6,那麼如果你在maven中使用1.6,會發生什麼? – Ralph

回答

0

我敢肯定,這與maven無關,但與彈簧配置。

你如何實例化Spring容器?你正在使用哪個ApplicationContext實現?請顯示啓動Spring的代碼以及至少部分Spring XML。

1

有這個工作了一段時間,我們看到它是不工作的javax.annotation.Resource註釋,我們終於明白了Maven構建缺乏JSR250-api.jar文件(邦克自