2013-02-15 15 views
13

StackOverflowで見つかるすべてのものを調べていますが、回答が見つかりませんでした。私はちょうど新しいマシンを作りました。以前のインストールでコンパイルしてビルドしたプロジェクトがあります。しかし、私の新しいマシンはそうではありません。すべてが正しくビルドされているように見える(ビルドエラーや依存関係は適切に含まれていない)が、実際のクラスファイル(私が書いたコード)は自分のプロジェクトからJARには含まれていない。その後、問題のあるPOMファイルがまだ残っている単純なhelloWorldプロジェクトを作成しました。私は式から日食を取るためにコマンドラインからビルドを行いました。Maven Buildにjarファイルの.classファイルが含まれていない

クラスコード

package com.zoverge.utils; 

public class HelloWorld { 

    /** 
    * @param args 
    */ 
    public static void main(String[] args) { 
     String message = args[0]; 
     System.out.println(message); 
    } 

} 

マイPOMファイル

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

たビルドは(予想通り)2つのjarファイルを作成したHelloWorld-1.0.jarとHelloWorld.jar。いずれのjarも、HelloWorld.java用のコンパイル済みクラスファイルを含んでいません。私はこの動作が他の開発マシンでうまく動作した他のプロジェクトでも同じであるため、これは私の環境に問題があると思いますが、違いを理解できないようです。私は構成を比較するために私の前のdevマシンにアクセスすることはできません。私の.m2/setting.xmlは基本的に空です。

<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

私はMaven 3.0.4でうまく動作します。 –

+0

私のMavenのインストールを深く掘り下げた後、複数のインスタンス(3.0.3と2.2.1)が見つかりました。私はこれをきれいにして、もう一度やり直す必要があります。 –

+0

運がない。私はMavenを完全にアンインストールして再インストールし、最新のもの(3.0.4)にアップグレードしました。クラスファイルを持たないjarファイルを取得しましたが、マニフェストにはmain-classもリストされていません。 マニフェスト・バージョン:1.0 アーカイバ-バージョン:叢アーカイバ -作成者:ApacheのMavenの 内蔵することにより:johnblakie ビルドJDK:1.6.0_37 –

答えて

22

私の問題が見つかりました。問題はフォルダ構造でした。 Mavenは/ src/main/java /構造を前提としています。私の構造は異なり、POM.xmlでオーバーライドされませんでした。標準パスに一致するか、POM.xmlのパスを上書きすることで問題が解決されました。

+1

大変ありがとうございます – ismail

+0

うわー、これは私の愚かなものでした。 –

+0

回答を受け入れることをお勧めします –

関連する問題