2016-04-11 22 views
1

Uygulamamı bir çalışma profilinde tomcat7-maven-plugin ile çalıştıran bir maven derlemem var. Tomcat yürütme ile paralel olarak bir jar (örneğin, maven-exec-plugin ile) çalıştırmak istiyorum. Bu kavanoz yerel gelişim için kullandığım bir ldap servisidir.tomcat ve jar maven yapısında paralel yürütme

Şimdiye kadar ayrı bir maven yürütülmesinde bu kavanozu (diğer pom) çalıştırmak için Engelsiz oldum: Ben maven-bağımlılık-Eklentinin aynı pom bu eklersek

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>exec-maven-plugin</artifactId> 
    <version>1.4.0</version> 
    <executions> 
     <execution> 
      <phase>run</phase> 
      <goals> 
       <goal>java</goal> 
      </goals> 
      <configuration> 
       <mainClass>x.y.z.ldap.LdapServerRunner</mainClass> 
       <arguments> 
        <argument>localhost</argument> 
        <argument>50000</argument> 
        <argument>src/main/resources/ldap-dev.ldif</argument> 
       </arguments> 
       <includePluginDependencies>true</includePluginDependencies> 
       <includeProjectDependencies>true</includeProjectDependencies> 
      </configuration> 
     </execution> 
    </executions> 
    <dependencies> 
     <dependency> 
      <artifactId>j</artifactId> 
      <groupId>x.y.z</groupId> 
      <version>x.x.x-SNAPSHOT</version> 
     </dependency> 
    </dependencies> 
</plugin> 

, maven beklemek Tomcat yürütmeye başlamadan önce ana sona. Yerel tomcat yürütme işleminin gerçekleştirilme zamanında jar (x.y.z.ldap.LdapServerRunner) çalışmasının mümkün olup olmadığını bilmek istiyorum.

+1

sen denediniz [Paralel kurar Maven 3] (https://cwiki.apache.org/confluence/display/MAVEN/Parallel+builds+in+Maven+3)? –

+0

Hayır, bir göz atacağım. Teşekkürler. – Akah

cevap

0

Taktiğimi değiştirdim: Paralel çalışmak için ayrı bir jar yürütme yapmak yerine (ve ilgili tüm sorunları hallediyorum), aynı zamanda jarma bir savaş yaptım (belirli bir maven profilinde)): Ben javax.servlet.ServletContextListener benim sunucu başlangıç ​​yazılı ve contextInitialized ve yöntemleri contextDestroyed durdurmak ettik uygulayan basit bir sınıfı oluşturduk

  • .

  • Birlikte projemin (src/main/Webapp/WEB-INF/web.xml) basit bir web.xml koyduk
  • : Ben ile benim ldap savaşı dahil ettik

    <listener> 
        <listener-class>x.y.z.EmbeddedLdapListener</listener-class> 
    </listener> 
    
  • uygulama savaş:

    <plugin> 
         <groupId>org.apache.tomcat.maven</groupId> 
         <artifactId>tomcat7-maven-plugin</artifactId> 
         <webapps> 
          <webapp> 
          <groupId>x.y.z</groupId> 
          <artifactId>myapp</artifactId> 
          <version>1.0.0-SNAPSHOT</version> 
          <type>war</type> 
          <asWebapp>true</asWebapp> 
          <contextPath>/myapp</contextPath> 
         </webapp> 
         <webapp> 
         <groupId>x.y.z</groupId> 
         <artifactId>myldapembedded</artifactId> 
         <version>1.0.0-SNAPSHOT</version> 
         <type>war</type> 
         <asWebapp>true</asWebapp> 
         <contextPath>/ldap</contextPath> 
         </webapp> 
         ... 
    

PS: özellikler kısmında (port, sunucunun, vb) için, ben Sistem özelliklerini kullandım.

  1. Sen tomcat7-maven-plugin bunları tanımlayabilirsiniz :

     <plugin> 
         <groupId>org.apache.tomcat.maven</groupId> 
         <artifactId>tomcat7-maven-plugin</artifactId> 
         ... 
         <configuration> 
          <systemProperties> 
          <myproperty>myvalue</myproperty> 
    
  2. Ve sonra Listerner kullanmak:

     System.getProperty("myproperty", mydefaultValue) 
    
İlgili konular