2013-02-15 38 views
13

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> 
+0

Lạ lùng, phù hợp với tôi với Maven 3.0.4. –

+0

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. –

+0

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 –

Trả lời

22

Tôi đã tìm thấy sự cố của mình. Vấn đề là cấu trúc thư mục. Maven giả định một/src/main/java/structure. cấu trúc của tôi khác và không bị ghi đè trong tệp POM.xml. khớp với đường dẫn chuẩn hoặc ghi đè đường dẫn trong POM.xml đã khắc phục được sự cố.

+1

cảm ơn bạn rất nhiều – ismail

+0

wow, điều này thật ngu ngốc khi tôi bỏ lỡ nhưng chính xác là vấn đề của tôi, cảm ơn !! –

+0

Bạn có thể muốn chấp nhận câu trả lời –

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