2010-10-08 17 views
5

Pracuję nad projektem Java opartym na Servlet, który ma być pakowany jako wojna przy użyciu Maven. Czy istnieje sposób, w jaki mogę dołączyć pliki JavaScript (JS) wraz z tym projektem (powinny być dostępne pod pewnym adresem URL, gdy projekt ładuje się na serwerze Tomcat).Pakowanie plików JavaScript w czasie wojny?

Rozejrzałem się, ale nie znalazłem żadnych działających rozwiązań.

+0

To to podobne pytanie. http://stackoverflow.com/questions/8397357/copy-a-file-during-maven-build-fase –

Odpowiedz

12

Być może lepszym rozwiązaniem jest trzymanie się konwencji Maven, która określa, że ​​katalog główny twojej aplikacji internetowej to src/main/webapp.

Więc jeśli umieścisz wszystkie swoje pliki JavaScript w src/main/webapp/javascript (lub src/main/webapp/js), zostaną one włączone do twojego pakietu ostatniej wojny.

W dodatku do Maven WAR podaje się niektóre opisy (patrz np. here) dotyczące zawartości katalogów. Na przykład:

|-- pom.xml 
`-- src 
    `-- main 
     |-- java 
     | `-- com 
     |  `-- example 
     |   `-- projects 
     |    `-- SampleAction.java 
     |-- resources 
     | `-- images 
     |  `-- sampleimage.jpg 
     `-- webapp 
      |-- WEB-INF 
      | `-- web.xml 
      |-- index.jsp 
      `-- jsp 
       `-- websource.jsp 

Jak widać, można umieścić w webapp/xxx katalogu zasobów, takich jak jsp plik tutaj.

Jak podaje cuh, możesz także skonfigurować wtyczkę Maven WAR, jeśli twoja struktura katalogów jest inna.

+0

Masz rację, moja example-config w jakiś sposób miesza zewnętrzne z niejawnym dodawaniem zasobów. Wszystko pod 'src/main/resources' jest domyślnie dodawane do folderu' WEB-INF/classes'. Więc zostałoby dodane dwa razy do "wojny". btw maven konwencji jest 'src/main/webapp' nie webapps. – cuh

+0

@cuh Poprawione. – romaintaz

3

Można użyć maven-war-plugin i skonfigurować go tak:

<plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-war-plugin</artifactId> 
     <version>2.0.2</version> 
     <configuration> 
      <warSourceDirectory>${basedir}/src/main/webapp</warSourceDirectory> 
      <webResources> 
       <resource> 
        <directory>your/path/to/js</directory> 
        <targetPath>js</targetPath> 
       </resource> 
      </webResources> 
     </configuration> 
</plugin> 

Zobacz here.

edycja: Prawdopodobnie nie chcesz dołączyć js do folderu classes.

1

Umieść je w katalogach pod src/main/webapp. To znaczy, zakładając, że wygenerowałeś go używając archetypu maven-archetype-webapp.

Mój obecny aplikacja ma je w src/main/webapp/javascript, i uzyskuje dostęp je w JSP, takich jak ten:

<script type="text/javascript" src="javascript/jquery-1.4.2.min.js"></script> 

(JSP pliki w src/main/webapp to jest)

Powiązane problemy