2012-07-06 26 views
10

Tôi có một vấn đề rất lạ với Maven và WTP Eclipse. Tôi có một dự án đa mô-đun, hãy gọi nó là project. Nó bao gồm hai mô-đun project-baseproject-web. Tôi đã bật độ phân giải không gian làm việc (và nó hoạt động tốt với một số dự án Maven rất giống nhau).Tại sao plugin WTP triển khai một phụ thuộc Maven như một thư mục, thay vì một cái bình?

project-base là phụ thuộc của project-web và thường được triển khai dưới dạng tệp jar. Nhưng trong vài ngày, nó vẫn được triển khai như một thư mục lớp trong Tomcat địa phương của tôi, như bạn có thể thấy ở đây: Dependency deployed as folder, not as jar

Vì vậy, Tomcat của tôi không nhận ra bất kỳ tệp lớp nào của tôi trong đó, vì nó mong đợi chúng là lọ, không phải thư mục. Hậu tố -tests xuất phát từ sự cần thiết phải có bài kiểm tra từ cơ sở trong dự án web của tôi. Tôi không nghĩ đây là vấn đề.

project-web có ba phụ thuộc được giải quyết từ không gian làm việc. Hai trong số chúng được triển khai chính xác, như bình, nhưng cái thứ ba thì không.

project-base 's pom.xml được hiển thị ở đây:

<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/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <parent> 
     <artifactId>project</artifactId> 
     <groupId>com.company.project</groupId> 
     <version>4.0.0</version> 
    </parent> 
    <artifactId>project-base</artifactId> 
    <name>projectBase</name> 
    <packaging>jar</packaging> 

    <properties> 
     <project.build.sourceEncoding>windows-1251</project.build.sourceEncoding> 
    </properties> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-jar-plugin</artifactId> 
       <version>2.3.2</version> 
       <executions> 
        <execution> 
         <goals> 
          <goal>jar</goal> 
          <goal>test-jar</goal> 
         </goals> 
        </execution> 
       </executions> 
      </plugin> 
      <plugin> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <configuration> 
        <source>1.6</source> 
        <target>1.6</target> 
       </configuration> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-site-plugin</artifactId> 
       <version>3.0</version> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-project-info-reports-plugin</artifactId> 
       <version>2.4</version> 
      </plugin> 
     </plugins> 
    </build> 
</project> 

Các phụ thuộc project-base vì nó được định nghĩa trong project-web trông như thế này:

<dependency> 
    <groupId>com.company.project</groupId> 
    <artifactId>project-base</artifactId> 
    <version>${project.version}</version> 
</dependency> 

<dependency> 
    <groupId>com.company.project</groupId> 
    <artifactId>project-base</artifactId> 
    <version>${project.version}</version> 
    <type>test-jar</type> 
    <scope>test</scope> 
</dependency> 

tôi không có một ý tưởng tại sao người ta sự phụ thuộc được triển khai theo cách kỳ lạ và tôi không biết cách sửa lỗi này. Tôi làm sạch các dự án, các tomcat, redeployed dự án web, thanh lọc toàn bộ kho Maven của tôi, kiểm tra toàn bộ dự án mới từ VCS, không có gì giúp đỡ.

Điều gì có thể khiến Eclipse WTP triển khai phụ thuộc này dưới dạng thư mục thay vì tệp jar?

+0

Mặc dù nó không giải thích ** tại sao **, [câu hỏi này] (http://stackoverflow.com/questions/8944278/m2eclipse-and-or-wtp-not-packaging-a-dependency-correctly) cung cấp một công việc xung quanh đã giúp chúng tôi – chrisbunney

+0

@chrisbunney Cảm ơn bạn đã cung cấp thông tin! Tôi đã thử thủ thuật, nhưng nó không hiệu quả với tôi. Tôi đã xóa tất cả các tệp cụ thể của Eclipse và để cho maven tạo lại chúng, nhưng tình hình vẫn không thay đổi. – guerda

Trả lời

0

Cuối cùng tôi đã giải quyết được sự cố của mình: Tôi gặp sự cố với phần thuộc tính Triển khai hội cho dự án project-base. Tôi không thể lưu nó, như Eclipse đã đề cập, trang hiện tại có chứa lỗi.

Sau đó, tôi đã xem tệp cài đặt .settings/org.eclipse.wst.common.component. Nó hoàn toàn trống rỗng (tôi không biết tại sao). Sau đó tôi đã thêm khối sau đây:

<?xml version="1.0" encoding="UTF-8"?> 
<project-modules id="moduleCoreId" project-version="1.5.0"> 
    <wb-module deploy-name="project-base"> 
     <wb-resource deploy-path="/" source-path="/src/main/java"/> 
     <wb-resource deploy-path="/" source-path="/src/main/resources"/> 
    </wb-module> 
</project-modules> 

Sau này, trang cài đặt có thể truy cập lại và JAR được lắp ráp chính xác. Độ phân giải không gian làm việc cũng vậy.

2

Tôi vừa gặp sự cố tương tự. Nâng cấp m2e lên phiên bản 1.2 đã sửa nó.

3

Tôi đã giải quyết sự cố bằng cách xóa phụ thuộc trong trang cài đặt dự án "Triển khai lắp ráp" và thêm lại.

+0

Cảm ơn gợi ý. Điều này đã không làm việc cho tôi, bởi vì tôi thậm chí không thể mở trang cài đặt chính xác này. Xem câu trả lời của tôi để biết chi tiết. – guerda

+0

Điều này làm việc cho tôi .... một lỗi gây phiền nhiễu. Công việc trước đây của tôi xung quanh đã được sao chép thủ công/dán jar vào thư mục lib triển khai: / – Selwyn

0

Nếu thư mục đó là một JAR phát nổ (vì vậy nó giống như một tệp JAR, nhưng xuất hiện dưới dạng một thư mục, không được lưu trữ), trong trường hợp của tôi đó là sự cố trình kết nối máy chủ.

Mặc dù tôi sử dụng JBoss thay vì Tomcat, điều này có thể hữu ích cho những người khác đang gặp khó khăn với vấn đề này.

Miễn là bạn đã cài đặt Công cụ JBoss mới nhất trên Eclipse, bạn có thể bấm đúp vào máy chủ trong chế độ xem Máy chủ để mở cài đặt.

Trên Triển khai tab, bạn có thể chọn Mô-đun zip Có/Không cho từng dự án. Khi tôi chọn YES cho các tệp jar tiện ích của mình, JBoss sau đó triển khai phụ thuộc như một tệp JAR bình thường thay vì một thư mục.

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