2014-01-21 125 views
4

我的工作包含子模塊彈簧加載應用彈簧的配置,大致看起來像以下:從另一個模塊

project 
|-- module1 
| |-- src 
| | `-- main 
| |  |-- java 
| |  `-- resources 
| |   |-- applicationContext.xml 
| |   `-- web.xml 
| `-- pom.xml 
|-- module2 
| |-- src 
| | `-- main 
| |  |-- java 
| |  `-- resources 
| |   `-- batch-jobs.xml 
| `-- pom.xml 
`-- pom.xml 

模塊1包含Web應用程序的配置。 module2包含使用spring-batch來運行在batch-jobs.xml中配置的批處理作業。

裏面applicationContext.xml我有以下行:

<import resource="classpath*: batch-jobs.xml" /> 

據我所知,這個文件被加載。我假設這是因爲以前我使用classpath: batch-jobs.xml(沒有*),它找不到該文件。

儘管加載此文件,我得到NoSuchBeanDefinitionException。如果我將batch-jobs.xml中的所有內容複製到applicationContext.xml,它都可以正常工作。

+0

模塊1在運行時看到模塊2的類資源嗎?即是類路徑中的batch-jobs.xml文件嗎? – Jukka

回答

0

您可以使用maven副本資源插件將資源複製到module1項目(在module1 pom.xml中添加副本資源插件)。假設您修改導入語句<import resource="classpath*: springjobs/batch-jobs.xml" />您可以使用複製資源插件將xml文件從module2的資源目錄複製到module1。

<plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-resources-plugin</artifactId> 
       <version>2.6</version> 
       <executions> 
        <execution> 
         <id>copy--common-resources</id> 
         <phase>initialize</phase> 
         <goals> 
          <goal>copy-resources</goal> 
         </goals> 
         <configuration> 
          <outputDirectory>${basedir}/src/main/resources/spingjobs</outputDirectory> 
          <resources> 
           <resource> 
            <directory>${basedir}/../project/module2/src/main/resources</directory> 
           </resource> 
          </resources> 
         </configuration> 
        </execution> 
       </executions> 
      </plugin> 
+0

感謝您的想法,但目錄不乾淨 – MewX

0

當你有多個模塊和你的基地網絡模塊不知道喜歡捆綁插件模塊(審計日誌記錄),你可以用下面的辦法。

classpath*:applicationContext-*.xml 

你必須遵循你的Spring配置XML文件(的applicationContext-m1.xml,的applicationContext-m2.xml)的命名約定以加載使用類路徑掃描彈簧的配置。

0

這也可以使用maven配置來實現。我不知道,不管你是否在實現Maven。但是你可以按照下面的語句來實現這一....

Module A, 
xml file of A is a.xml 
Module B. 
xml file of B is b.xml 

I have to include the config file of Module B in Module A. 

Step 1: 
In Module A pom.xml file include the dependency of Module B. 
     <dependency> 
      <groupId><module_package></groupId> 
      <artifactId><module_name></artifactId> 
      <version>1.0</version> 
     </dependency> 

Step 2: 
Go to the xml configuration file(eg a.xml) and import the configuration file of Module B. 
<import resource="b.xml"/> 
2

當你使用這樣

<import resource="classpath*: batch-jobs.xml" /> 

它忽略文件無法找到星號(除其他事項外)

請參閱this question的細節

確保您參考其彈性配置XML與領先的斜線,這樣的:

<import resource="classpath:/batch-jobs.xml" /> 

如果仍然抱怨文件批量jobs.xml未發現請確保您有模塊2罐子在你的類路徑上(將模塊2的依賴添加到模塊1)。

相關問題