Tôi đã xem xét tất cả mọi thứ tôi có thể tìm thấy trên StackOverflow và tôi không thể tìm thấy câu trả lời. Tôi vừa xây dựng một máy mới và tôi có các dự án được biên dịch và xây dựng trên các bản cài đặt trước đó tốt. Nhưng máy mới của tôi sẽ không. Tất cả mọi thứ dường như được xây dựng một cách chính xác (không có lỗi xây dựng, phụ thuộc bao gồm đúng), nhưng các tập tin lớp thực tế (mã tôi đã viết) từ dự án của tôi không được bao gồm trong jar. Sau đó tôi đã tạo một dự án helloWorld đơn giản với một tệp POM tối thiểu nào đó để xem sự cố vẫn tồn tại. Tôi đã xây dựng từ dòng lệnh để lấy nhật thực ra khỏi phương trình.Maven Xây dựng không bao gồm tệp .class trong jar
Lớp Mã
package com.zoverge.utils;
public class HelloWorld {
/**
* @param args
*/
public static void main(String[] args) {
String message = args[0];
System.out.println(message);
}
}
tập tin POM My
<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.zoverge.utils</groupId>
<artifactId>helloworld</artifactId>
<packaging>jar</packaging>
<version>1.0</version>
<name>Hello World</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.java.version>1.6</project.build.java.version>
<org.apache.maven.plugins.maven-compiler-plugin.version>2.5.1</org.apache.maven.plugins.maven-compiler-plugin.version>
</properties>
<build>
<plugins>
<!-- Maven will compile our source java classes using the "project.build.java.version"
specified -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>${org.apache.maven.plugins.maven-compiler-plugin.version}</version>
<configuration>
<source>${project.build.java.version}</source>
<target>${project.build.java.version}</target>
</configuration>
</plugin>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.3</version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<mainClass>com.zoverge.utils.HelloWorld</mainClass>
</manifest>
</archive>
<finalName>HelloWorld</finalName>
<appendAssemblyId>false</appendAssemblyId>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<dependencies/>
</project>
Kết quả là xây dựng sản xuất 2 file jar (như mong đợi) helloworld-1.0.jar và HelloWorld.jar. Cả hai lọ chứa tệp lớp được biên dịch cho HelloWorld.java. Tôi nghĩ rằng đây là một vấn đề với môi trường của tôi bởi vì hành vi này là như nhau đối với các dự án khác làm việc tốt trên các máy dev khác, nhưng tôi dường như không thể tìm ra sự khác biệt. Tôi không có quyền truy cập vào máy dev trước đó của mình để so sánh cấu hình. My .m2/setting.xml về cơ bản là trống.
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
http://maven.apache.org/xsd/settings-1.0.0.xsd">
<localRepository>${user.home}/.m2/repository</localRepository>
<interactiveMode/>
<usePluginRegistry/>
<offline/>
<pluginGroups/>
<servers/>
<mirrors/>
<proxies/>
<profiles/>
<activeProfiles/>
</settings>
Lạ lùng, phù hợp với tôi với Maven 3.0.4. –
Sau khi tìm hiểu sâu hơn về cài đặt maven của tôi, tôi đã tìm thấy nhiều phiên bản (3.0.3 & 2.2.1). Tôi cần phải làm sạch điều này và thử lại ... thx. –
Không may mắn. Tôi đã gỡ bỏ hoàn toàn và cài đặt lại Maven và nâng cấp lên phiên bản mới nhất (3.0.4) và tôi vẫn nhận được một cái lọ không có tệp lớp và giờ đây tệp kê khai không có lớp chính được liệt kê. Manifest-Version: 1.0 Archiver-Version: Plexus Archiver Created-By: Apache Maven Built-By: johnblakie Build-JDK: thêm 1.6.0_37 –