2011-03-23 29 views
6

Tôi có một POM đang hoạt động hoặc chủ yếu làm việc lấy tất cả và chính xác chỉ các JAR mà tôi quan tâm để viết một ứng dụng Facelets. Tôi đang sử dụng m2eclipse. Khi tôi nhập khẩu ứng dụng mới tạo Maven, nó đến trong sạch và nhiều hơn hoặc ít hơn như mong đợi, tuy nhiên, nó không giống như một dự án Web động trong đó khi tôi cố gắng chạy nó, nó không cung cấp Run As -> Run on Server Tùy chọn.Làm thế nào để tạo ứng dụng web Maven nguyên mẫu cho Eclipse?

Tôi đã nghiên cứu các dự án Eclipse do Maven tạo khác hoạt động (nhưng không được thiết lập với tổ hợp JAR tôi muốn) theo nghĩa là chúng có thể chạy trên Máy chủ. Ví dụ, chương trình này hoạt động, nhưng nó không có các lọ Tôi muốn:

mvn archetype: tạo -DarchetypeArtifactId = maven-nguyên mẫu-webapp \ -DgroupId = package-name -DartifactId = dự án tên

Tôi có cần phải tạo một customifetyId nguyên mẫu tùy chỉnh trong giả của ...- DarchetypeArtifactId = maven-archetype-webapp ... Tôi thấy trong câu lệnh ở trên và, nếu có, làm cách nào?

Hoặc chỉ đơn thuần là một chức năng của hệ thống tệp được thiết lập bởi nguyên mẫu đó? Tôi thấy rằng các dự án tôi đã tạo ra (webapp1) ...

 
webapp1 
|-- src 
| `-- main 
|  |-- java 
|  |-- resources 
|  `-- webapp 
|   `-- WEB-INF 
`-- target 
    `-- classes` 

... có nội dung khác nhau hơn một tạo sử dụng maven-nguyên mẫu-webapp, nhưng tôi không biết làm thế nào để buộc mvn eclipse: nhật thực sạch: eclipse để tạo ra (hoặc cho dù đó là những gì nói với Eclipse đây là một ứng dụng web và nó nên thiết lập cho Run As -> Run on Server).

 
simpleWeb 
|-- src 
| `-- main 
|  |-- java 
|  | `-- com 
|  |  `-- mytutorial 
|  |-- resources 
|  | `-- com 
|  |  `-- mytutorial 
|  `-- webapp 
|   |-- META-INF 
|   |-- pages 
|   `-- WEB-INF 
`-- target 
    |-- classes 
    | `-- com 
    |  `-- mytutorial 
    |-- maven-archiver 
    |-- META-INF 
    | `-- maven 
    |  `-- com.mytutorial 
    |   `-- simpleWeb 
    |-- pages 
    |-- simpleWeb 
    | |-- META-INF 
    | |-- pages 
    | `-- WEB-INF 
    |  |-- classes 
    |  | `-- com 
    |  |  `-- mytutorial 
    |  `-- lib 
    |-- surefire 
    |-- test-classes 
    `-- WEB-INF 
     |-- classes 
     | `-- com 
     |  `-- mytutorial 
     `-- lib 

Xin cảm ơn vì bất kỳ ai có thể khởi động tôi trên con đường khai sáng.

Russ

P.S. Dưới đây là tôi pom.xml:

<project xmlns="http://maven.apache.org/POM/4.0.0" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.etretatlogiciels.webapp1</groupId> 
    <artifactId>webapp1</artifactId> 
    <packaging>war</packaging> 
    <version>1.0-SNAPSHOT</version> 
    <name>webapp1 Maven Webapp</name> 
    <url>http://maven.apache.org</url> 

    <properties> 
    <commons-beanutils-version> 1.8.3  </commons-beanutils-version> 
    <commons-codec-version>  1.4   </commons-codec-version> 
    <commons-collections-version> 3.2.1  </commons-collections-version> 
    <commons-digester-version>  2.1   </commons-digester-version> 
    <commons-discovery-version> 0.4   </commons-discovery-version> 
    <commons-logging-version>  1.1.1  </commons-logging-version> 
    <jsf-facelets-version>   1.1.15  </jsf-facelets-version> 
    <myfaces-version>    2.0.4  </myfaces-version> 
    <richfaces-version>   3.3.3.Final </richfaces-version> 
    </properties> 

    <pluginRepositories> 
    <pluginRepository> 
     <id>jboss-public-repository-group</id> 
     <name>JBoss Public Maven Repository Group</name> 
     <url>https://repository.jboss.org/nexus/content/groups/public-jboss/</url> 
     <layout>default</layout> 
     <releases> 
     <enabled>true</enabled> 
     <updatePolicy>never</updatePolicy> 
     </releases> 
     <snapshots> 
     <enabled>true</enabled> 
     <updatePolicy>never</updatePolicy> 
     </snapshots> 
    </pluginRepository> 
    </pluginRepositories> 

    <dependencies> 
    <!-- Apache Commons --> 
    <dependency> 
     <groupId>commons-beanutils</groupId> 
     <artifactId>commons-beanutils</artifactId> 
     <version>${commons-beanutils-version}</version> 
    </dependency> 
    <dependency> 
     <groupId>commons-codec</groupId> 
     <artifactId>commons-codec</artifactId> 
     <version>${commons-codec-version}</version> 
    </dependency> 
    <dependency> 
     <groupId>commons-collections</groupId> 
     <artifactId>commons-collections</artifactId> 
     <version>${commons-collections-version}</version> 
     <optional>true</optional> 
    </dependency> 
    <dependency> 
     <groupId>commons-digester</groupId> 
     <artifactId>commons-digester</artifactId> 
     <version>${commons-digester-version}</version> 
    </dependency> 
    <dependency> 
     <groupId>commons-discovery</groupId> 
     <artifactId>commons-discovery</artifactId> 
     <version>${commons-discovery-version}</version> 
    </dependency> 
    <dependency> 
     <groupId>commons-logging</groupId> 
     <artifactId>commons-logging</artifactId> 
     <version>${commons-logging-version}</version> 
    </dependency> 

    <!-- Facelets --> 
    <dependency> 
     <groupId>com.sun.facelets</groupId> 
     <artifactId>jsf-facelets</artifactId> 
     <version>${jsf-facelets-version}</version> 
    </dependency> 

    <!-- MyFaces --> 
    <dependency> 
     <groupId>org.apache.myfaces.core</groupId> 
     <artifactId>myfaces-api</artifactId> 
     <version>${myfaces-version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.myfaces.core</groupId> 
     <artifactId>myfaces-impl</artifactId> 
     <version>${myfaces-version}</version> 
    </dependency> 

    <!-- RichFaces --> 
    <dependency> 
     <groupId>org.richfaces.framework</groupId> 
     <artifactId>richfaces-api-jsf2</artifactId> 
     <version>${richfaces-version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.richfaces.framework</groupId> 
     <artifactId>richfaces-impl-jsf2</artifactId> 
     <version>${richfaces-version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.richfaces.framework</groupId> 
     <artifactId>richfaces-ui-jsf2</artifactId> 
     <version>${richfaces-version}</version> 
    </dependency> 

    <!-- JUnit --> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>3.8.1</version> 
     <scope>test</scope> 
    </dependency> 
    </dependencies> 

    <build> 
    <finalName>webapp1</finalName> 
    <resources> 
     <resource> 
     <directory>src/main/java</directory> 
     <includes> 
      <include>**/*.java</include> 
     </includes> 
     </resource> 
     <resource> 
     <directory>src/main/resources</directory> 
     <excludes> 
      <exclude>**/*.java</exclude> 
     </excludes> 
     </resource> 
    </resources> 
    <plugins> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-war-plugin</artifactId> 
     <version>2.0</version> 
     </plugin> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-compiler-plugin</artifactId> 
     <version>2.0.2</version> 
     <configuration> 
     <source>1.5</source> 
     <target>1.5</target> 
     </configuration> 
     </plugin> 
    </plugins> 
    </build> 

    <profiles> 
    <profile> 
     <id>richfaces</id> 
     <activation> 
     <activeByDefault>true</activeByDefault> 
     </activation> 
     <repositories> 
      <repository> 
      <id>maven2.repository</id> 
      <name>Repository for Maven by Maven</name> 
      <url>http://repo2.maven.org/maven2</url> 
      <layout>default</layout> 
      <releases> 
       <enabled>true</enabled> 
       <updatePolicy>always</updatePolicy> 
      </releases> 
      </repository> 
      <repository> 
      <id>maven2-repository.dev.java.net</id> 
      <name>Java.net Repository for Maven</name> 
      <url>http://download.java.net/maven/1</url> 
      <layout>legacy</layout> 
      <releases> 
       <enabled>true</enabled> 
       <updatePolicy>always</updatePolicy> 
      </releases> 
      </repository> 
      <repository> 
      <id>JBoss Repository Old</id> 
      <name>Repository for Maven by JBoss</name> 
      <url>http://repository.jboss.org/maven2</url> 
      <layout>default</layout> 
      <releases> 
       <enabled>true</enabled> 
       <updatePolicy>always</updatePolicy> 
      </releases> 
      </repository> 
      <repository> 
      <id>JBoss Repository Nexus</id> 
      <name>Repository for Maven by JBoss</name> 
      <url>http://repository.jboss.org/nexus/content/groups/public-jboss</url> 
      <layout>default</layout> 
      <releases> 
       <enabled>true</enabled> 
       <updatePolicy>always</updatePolicy> 
      </releases> 
     </repository> 
     </repositories> 
    </profile> 
    </profiles> 

</project> 
+0

là bạn nhằm mục đích gì? Mô tả vấn đề của bạn quá phức tạp. Nếu bạn muốn chạy bạn chiến tranh trong apache tomcat bạn có thể thêm apache tomcat server trong eclipse: window-> hiển thị view-> others-> server-> servers. Sau đó liên kết dự án của bạn với tomcat (tôi đã sử dụng đồng bộ hóa tệp - nhưng cách của tôi không phải là dễ nhất). –

+0

Cảm ơn.Tôi cho rằng tôi không biết chính xác những gì tôi muốn mà tôi không biết về không gian giữa Maven và Eclipse. Mục tiêu của tôi là kết nối không gian đó với sự hiểu biết, sau đó viết về nó cho những người khác (ngoài việc thực sự tạo ra một ứng dụng web). Tôi đã có một máy chủ Tomcat trong không gian làm việc của tôi, nhưng có hệ thống dây điện Eclipse, thường được xử lý bằng cách tạo ra một dự án Web động, điều đó phải được thực hiện. Khi tôi cho phép Maven tạo dự án, không có hệ thống dây nào được thực hiện. Tôi đã so sánh POM của tôi với các POM khác mà hệ thống dây điện không hoạt động và không thể tiết lộ sự khác biệt. –

Trả lời

7

Tôi đã có chính xác cùng một vấn đề. Không có kiểu mẫu nào hiện có phù hợp với nhu cầu của tôi. Nếu tôi tạo ra (từ nhật thực) một dự án từ nguyên mẫu tùy chỉnh, nó sẽ không trở thành dự án web động. Nếu bạn chạy mvn -Dwtpversion = 2.0 eclipse: eclipse nó lại thêm tất cả các loại thứ bạn không cần. Vì vậy, sau khi điều tra tôi cuối cùng đã tìm ra những gì defeines "dự án web động". Đó là một loạt các thư mục và tập tin trong thư mục .settings và các mục trong .project.

Vì vậy, những gì bạn cần làm là:
1.) tạo một dự án web động trống (không phải là maven) từ trong nhật thực. 2. Nếu không thêm bất kỳ tập tin nào hoặc bất kỳ thay đổi nào khác, hãy kiểm tra trên hệ thống tập tin các tập tin sau được tạo bởi nhật thực (liên quan đến thư mục dự án):
.project
.settings/org.eclipse.jdt.core. prefs
.settings/org.eclipse.wst.common.project.facet.core.prefs.xml
.settings/org.eclipse.wst.jsdt.ui.superType.name
.settings/org.eclipse. jst.jsp.core.prefs
.settings/org.eclipse.wst.common.project.facet.core.xml
.settings/org.eclipse.wst.common.component
.settings/org.eclipse.wst.jsdt.ui.superType.container

3.) Sao chép những tập tin này vào thư mục nguyên mẫu-tài nguyên của mình cho archetime tùy chỉnh của bạn
4.) Chỉnh sửa và khái quát hóa các tập tin sao chép (thay thế tên thực tế dự án với $ {} artifactId vv ...
5.) Trong file nguyên mẫu-metadata.xml của bạn thêm:

<fileSet encoding="UTF-8" filtered="true"> 
    <directory></directory> 
<includes> 
    <include>.project</include> 
</includes> 
</fileSet> 
<fileSet encoding="UTF-8" filtered="true"> 
    <directory>.settings</directory> 
</fileSet> 

Without maven này sẽ không tải lên các tập tin bắt đầu với

"*."

6.) Voila !. Cài đặt và triển khai kiểu mẫu của bạn và thử lại. Nó làm việc cho tôi.

+0

Siêu! Cảm ơn rất nhiều, bạn của tôi! –

1

Để tạo một dự án Web động cho Eclipse, bạn cần phải làm điều này:

1) tạo ra một dự án sử dụng một cái gì đó như:

mvn nguyên mẫu: tạo> đối số tùy chọn như -Dfilter = webapp-j2ee <

Điều này sẽ giúp ích bạn tạo một dự án maven ở chế độ tương tác và bạn sẽ không phải nhập các tùy chọn cho artifactId, groupId, v.v.

Lưu ý: Nó vẫn không thể là một dự án Web động, trong trường hợp của tôi, nó không bao giờ là .. (Tôi đoán về cơ bản nó phụ thuộc vào archetype-artifactId mà bạn đã sử dụng và tôi chưa tìm thấy mô-đun sẽ tạo ra một mô-đun Web động cho một ứng dụng j2ee cơ bản sẽ chỉ sử dụng jsp, servlet và không có gì nữa)

2) Bây giờ để tạo hồ sơ dự án cho nhật thực, sử dụng lệnh này:

mvn -Dwtpversion = 2.0 eclipse: eclipse

Điều này sẽ tạo ra tệp dự án có bộ mặt dự án bắt buộc. Vì vậy, khi bạn nhập nó vào IDE Eclipse của bạn, nó sẽ là một "Dynamic Web Module".

Lưu ý: Bây giờ nếu bạn đang tìm kiếm phiên bản cụ thể của "Mô-đun web động" thì bạn cần phải định cấu hình POM của mình. Phiên bản tùy thuộc vào thẻ sau trong thẻ xây dựng của bạn:

<code> 
<build> 
...... 
    <plugins> 
    ........ 
    <plugin> 
     <groupId>   org.apache.maven.plugins </groupId> 
     <artifactId>  maven-compiler-plugin  </artifactId> 
     <version>   2.3.2      </version> 
     <configuration> 
        <source> 1.6  </source> 
        <target> 1.6  </target> 
     </configuration> 
    </plugin> 
    ......... 
    </plugins> 
....... 
</build> 
</code> 

Bây giờ, nếu nguồn và đích được đặt thành 1.6 (như trong trường hợp này) thì Mô-đun web động 2.5 sẽ được chọn. Nếu không, nó sẽ là 2,4 cho trình biên dịch-plugin 1.4 và như vậy.

7

cách chỉ định cấu hình plugin maven-eclipse trong tài nguyên mẫu/tệp pom.xml của bạn?

<build> 
    <finalName>archetype-javaee5-webapp</finalName> 
    <pluginManagement> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-eclipse-plugin</artifactId> 
       <version>2.9</version> 
       <configuration> 
        <wtpversion>2.0</wtpversion> 
       </configuration> 
      </plugin> 
     </plugins> 
    </pluginManagement> 
</build>  

này sẽ tạo ra một dự án web thể trong eclipse

+1

Tôi cảm ơn bạn vì phản hồi này. Cuối cùng, tôi từ bỏ Maven cho Ivy + kiến. Tôi biết nó là một điều thú vị để thừa nhận điều này trong một thế giới hoàn toàn Maven, nhưng hy vọng cảnh sát sẽ không bao giờ tìm thấy tôi ;-) Nếu tôi có dịp quay trở lại quyết định của mình, tôi sẽ thử giải pháp này. –

+0

Đây là giải pháp tôi sử dụng để ứng dụng web của tôi được nhận dạng như vậy trong Eclipse. Hoạt động như mong đợi. –

+0

Đảm bảo bạn cài đặt Tích hợp Maven cho WTP Eclipse (m2e-wtp) http://marketplace.eclipse.org/node/441371#.URhKr1qje1k – Ring

Các vấn đề liên quan