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-base
và project-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:
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?
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
@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