2014-07-02 6 views
0

У нас есть родительский проект с несколькими подпроектами ниже. Некоторые из них производят войну, а другие производят банку.Jetty Maven не может найти dev.properties от родительского проекта

Внутри родительского проекта есть файл dev.properties. Он находится в каталоге

/src/main/resources/config/environments/dev.properties

Этот файл используется несколькими подпроектами правильно с нашей проблемой.

Проект, который вызывает ошибка имеет следующую конфигурацию причала в pom.xml

<profiles> 
    <profile> 
     <id>jetty</id> 
     <build> 
      <finalName>${project.artifactId}</finalName> 
      <plugins> 
       <plugin> 
        <groupId>org.mortbay.jetty</groupId> 
        <artifactId>maven-jetty-plugin</artifactId> 
        <version>6.1.16</version> 
        <configuration> 
         <scanIntervalSeconds>10</scanIntervalSeconds> 
         <stopPort>8005</stopPort> 
         <stopKey>STOP</stopKey> 
         <contextPath>/</contextPath> 
         <useTestClasspath>true</useTestClasspath> 
        </configuration> 
        <executions> 
         <execution> 
          <id>start-jetty</id> 
          <phase>pre-integration-test</phase> 
          <goals> 
           <goal>run</goal> 
          </goals> 
          <configuration> 
           <scanIntervalSeconds>0</scanIntervalSeconds> 
           <daemon>true</daemon> 
          </configuration> 
         </execution> 
         <execution> 
          <id>stop-jetty</id> 
          <phase>post-integration-test</phase> 
          <goals> 
           <goal>stop</goal> 
          </goals> 
         </execution> 
        </executions> 
       </plugin> 
      </plugins> 
     </build> 
    </profile> 

</profiles> 

ссылки Этого проекта с зависимостями нашего администратора проекта, как это:

<dependency> 
      <groupId>sample.project</groupId> 
      <artifactId>sample-project-admin-service</artifactId> 
      <version>0.1.0-SNAPSHOT</version> 
     </dependency> 

Внутри проект образца и в файле sample-project-admin-service-context.xml имеется такая конфигурация:

<bean id="cacheMan" 
     class="org.infinispan.spring.provider.SpringRemoteCacheManagerFactoryBean" 
     p:configurationPropertiesFileLocation="/WEB-INF/classes/config/environments/${SERVER_ENV}.properties" /> 

Это должно прочитать файл свойств и инициализировать cacheMan. Образец-проект-админ-сервис-context.xml находится в пути:

/sample-project-admin-service/src/main/resources/META-INF/spring/flash-air-admin-service-context.xml

Когда мы делаем войну файл и развернуть его на кот. приложение развертывается правильно без каких-либо проблем. Но когда я пытаюсь загрузить его с причалом я получаю следующее сообщение об ошибке:

Cannot resolve reference to bean 'cacheManager' while setting bean property 'cacheManager'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'cacheManager' defined in class path resource [META-INF/spring/sample-project-admin-service-context.xml]: Invocation of init method failed; nested exception is java.io.FileNotFoundException: Could not open ServletContext resource [/WEB-INF/classes/config/environments/dev.properties]:

Jetty Maven запускается с помощью команды:

mvn install -Pjetty

любая помощь будет оценена.

заранее спасибо

ответ

0

Хорошо, я, кажется, решена проблема.Шаги я последовал являются:

Это конечный профиль для молы плагина:

<profile> 
      <id>jetty</id> 
      <build> 
       <finalName>${project.artifactId}</finalName> 
       <plugins> 
        <plugin> 
         <groupId>org.eclipse.jetty</groupId> 
         <artifactId>jetty-maven-plugin</artifactId> 
         <version>9.2.1.v20140609</version> 
         <configuration> 
          <scanIntervalSeconds>10</scanIntervalSeconds> 
          <stopPort>8005</stopPort> 
          <stopKey>STOP</stopKey> 
          <contextPath>/</contextPath> 
          <useTestClasspath>true</useTestClasspath> 
         </configuration> 
         <executions> 
          <execution> 
           <id>start-jetty</id> 
           <phase>pre-integration-test</phase> 
           <goals> 
            <goal>run</goal> 
           </goals> 
           <configuration> 
            <scanIntervalSeconds>0</scanIntervalSeconds> 
            <daemon>true</daemon> 
           </configuration> 
          </execution> 
          <execution> 
           <id>stop-jetty</id> 
           <phase>post-integration-test</phase> 
           <goals> 
            <goal>stop</goal> 
           </goals> 
          </execution> 
         </executions> 
        </plugin> 
       </plugins> 
      </build> 
     </profile> 

Как вы можете видеть, что я изменил Verion к 9.2.1.v20140609. Это, похоже, решило проблему.

Спасибо

0

Во время развертывания все Файловые подходят Whitin ГКЗ/основные/ресурсы упаковываются в пути к классам. Затем, когда контейнер Ioc пытается создать экземпляр компонента cacheManManager, он не сможет его найти. Беда в том, что вы не можете восстановить файл внутри родителя во время определения, поскольку она имеет непрозрачный путь Get reosurce in a modular project и единственное, что нужно сделать, это:

  • Переместить файл из родительского проекта в суб-модуля проект

и таким образом измените определение компонента.

если путь

/src/main/resources/config/environments/dev.properties

ваше определение компонента будет:

<bean id="cacheMan" 
    class="org.infinispan.spring.provider.SpringRemoteCacheManagerFactoryBean" 
    p:configurationPropertiesFileLocation="/config/environments/dev.properties" /> 

таким образом контейнер Ioc способен найти файл

+0

привет, спасибо за ваш ответ. Проблема заключается в том, что файл dev.properties используется несколькими проектами, и я не думаю, что это хорошая практика, чтобы сохранить копию файла в каждом подпроекте. есть ли способ, возможно, переместить файл во время компиляции с maven? – giannisapi

+0

@giannisapi Попробуйте изменить только путь ** p: configurationPropertiesFileLocation ** оставить файл в родительском проекте, он должен работать – Skizzo

+0

привет Skizzo, я уже использую p: configurationPropertiesFileLocation, не могли бы вы объяснить немного больше, что вы имеете в виду? – giannisapi