2011-02-10 11 views
11

Not: Bu soru ilk sürümünde herhangi bir yanıt alamadım, bu yüzden daha genel olması modifiye ...Maven AND Eclipse'deki çeşitli web uygulamaları için paylaşılan kaynakları nasıl yönetirim?

Bağlam Projem birkaç maven ayrılmıştır

modüller ve çeşitli web uygulamaları. İşte yapı şu şekildedir: Yapı, JS, CSS ve resim dosyaları gibi tüm ortak uygulamaları paylaşır. Tüm web uygulamaları, JS, CSS ve resim dosyaları gibi ortak kaynakları paylaşır. Bu kaynakları her bir web-app-X numaralı belgede çoğaltmak yerine, bir WAR projesi olan web-resources adlı başka bir proje oluşturmaya karar verdim. yapısı aşağıdaki biridir:

my-project 
    + pom.xml 
    +-- commons 
    +-- persistence 
    +-- ... 
    +-- web-app-1 
    +-- web-app-2 
    +-- ... 
    +-- web-resources 
     +-- pom.xml 
     +-- src/main/webapp 
      +-- web.xml (which is almost empty, just need to be present for Maven) 
      +-- web_resources 
       +-- css 
       +-- images 
       +-- javascript 

Maven 2'de Maven

(veya Maven 3, sadece 3.0.2 maven için projemi göç gibi), bu yapılandırma

<groupId>foo.bar</groupId> 
<artifactId>web-app-1</artifactId> 
... 
<dependencies> 
    <dependency> 
     <groupId>foo.bar</groupId> 
     <artifactId>web-resources</artifactId> 
     <version>${preclosing-version}</version> 
     <type>war</type> 
    </dependency> 
    ... 

yüzden inşa: tüm web-app-X bir bağımlılık olarak web-resources beyan olarak yönetmek kolay Benim savaş projem, ilk önce web-resources.war (hemen önce inşa edilmiş), unzip olsun veweb-app-X web uygulaması üzerine inşa. Bu şekilde, WAR dosyam da paylaşılan kaynakları içeren web-resources/ adlı bir dizin içerecektir.

Bu, savaş kaplaması prensibidir.

Maven bakış açısından, her şey yolunda!


Eclipse

Şimdi burada temel sorun gelir: İyi bir Eclipse konfigürasyonuna sahip.

Soru: Güncel yapılandırmamı Eclipse tarafından doğru şekilde yönetilmek üzere nasıl kullanabilirim? Özellikle, herhangi bir web-app-X'u Tomcat'ta Eclipse ...

kullanarak dağıttığımda, daha fazla otomatikleştirilebilir (?) Yapılandırmayı almak ve herhangi bir manuel adımdan kaçınmak istiyorum, çünkü bu yapılandırma onlarca geliştirici tarafından kullanılmalıdır. ..

Benim için en iyi çözüm, Eclipse bağlantılı kaynaklarını kullanıyor görünmektedir. Böylece, aşağıdaki yapılandırmayı web-app-X pompamda ayarlıyorum.xml: Ben mvn eclipse:eclipse yapılandırma çalıştırdığınızda

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-eclipse-plugin</artifactId> 
      <configuration> 
       <wtpversion>1.5</wtpversion> 
       <linkedResources> 
        <linkedResource> 
         <name>web_resources</name> 
         <type>2</type> 
         <location>${project.basedir}\..\web-resources\src\main\webapp\web_resources</location> 
        </linkedResource> 
       </linkedResources> 
      </configuration> 
     </plugin> 
     ... 

, benim .project dosyasında başarıyla bu bilgileri ekler:

<projectDescription> 
    ... 
    <linkedResources> 
    <link> 
     <name>web_resources</name> 
     <type>2</type> 
     <location>C:\dev\project\web-resources\src\main\webapp\web_resources</location> 
    </link> 
    </linkedResources> 
<projectDescription> 

Şimdi Eclipse benim proje almayı. Sorun: Project properties > Java Build Path > Source'da, Bağlantı Kaynağını şimdi göremiyorum. Sadece dört Maven varsayılan dizinleri görüyorum (src/main/java, src/main/resources, src/test/java ve src/test/resources). Ne garip değil mi Eclipse benim Tomcat benim web uygulaması dağıtırken Yani, değil dağıtmaya yapar ...

el bağlantılı kaynakları eklemeye çalıştığınızda, bu reddediyor ve bu zaten olduğunu belirten web_resources dizini ve böylece CSS/JS/görüntüleri dağıtılmadım. Bazı testlerden sonra

, iki değişiklik yapmak zorunda gibi görünüyor:

  1. benim .classpath dosyasında satır <classpathentry kind="src" path="web_resources" output="src/main/webapp/web_resources"/> ekleyin;
  2. .project dosyasındaki <project>preclosing-web-resources</project> dosyasını kaldırın. Bu yapılandırmayı kullanarak, Eclipse kopyalamak (ve senkronizasyon tutmak) web_resources projenin içeriğini benim web-app-X/src/main/webapp/web_resources yılında, ancak bu (bu dizin SCM tarafından göz ardı edilir) bir sorun değil ki

Not.

mvn eclipse:clean eclipse:eclipse myEclipsePlugin:eclipse 

:

buldum sadece otomatik çözeltisi (bir .bat dosyası veya kullanmak) önceki iki değişiklik yapmak basit bir Maven eklentisi oluşturmak ve sonra aşağıdaki komutu çalıştırmak için oldu Soru

  • Böyle bir yapılandırmayı yönetmenin daha iyi bir yolu var mı?

Teknik bilgiler

Java 6, Maven 3.0.2, maven Tutulma eklenti 2.8, 3.3.2 Eclipse (ama Eclipse daha yeni bir sürümü ile test edebilirsiniz), hiçbir m2eclipse Eklenti.

cevap

6

Servlet 3.0 ile başlayarak, src/main/resources/META-INF/kaynaklar dizin içinde koyarak kaynakları paylaşabilir.

Webapp dağıtıldığında, Servlet 3.0 bu kaynakları içerik yolundan kullanılabilir duruma getirir. Örneğin, senin durumunda ...

web-resources 
-- src 
---- main 
------ resources 
-------- META-INF 
---------- resources 
------------ css 
-------------- global.css 
------------ images 
-------------- background.png 

en my_project web kaynaklara bir bağımlılığı vardır ve url http://my.localhost:8080/myProject dağıtılan farz edelim. Bu yapılandırma ile

aşağıdaki URL'lerin doğru kaynaklara çözer:

IF kaynaklar ve gerçek uygulaması arasında bir ad çakışması , uygulama kazanacak.

sizin web.xml Eğer Servlet 3,0

<web-app xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 
    version="3.0"> 
kullandığınız devletler emin olun
İlgili konular