23

StackOverflow で見つけたすべてのものを調べましたが、答えが見つかりませんでした。新しいマシンを構築したばかりで、以前のインストールで問題なくコンパイルおよびビルドされたプロジェクトがあります。しかし、私の新しいマシンはそうではありません。すべてが正しくビルドされているように見えますが (ビルド エラーはなく、依存関係が適切に含まれています)、プロジェクトの実際のクラス ファイル (私が書いたコード) は jar に含まれていません。次に、問題がまだ存在することを確認するための最小限のPOMファイルを使用して、簡単なhelloWorldプロジェクトを作成しました。方程式から日食を取り除くために、コマンドラインからビルドを行いました。

クラスコード

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>

結果のビルドでは、(予想どおり) helloworld-1.0.jar と HelloWorld.jar の 2 つの jar ファイルが生成されます。どちらの jar にも、HelloWorld.java のコンパイル済みクラス ファイルは含まれていません。この動作は他の開発マシンで正常に動作する他のプロジェクトでも同じであるため、これは私の環境に問題があるに違いないと思いますが、違いを理解できないようです。以前の開発マシンにアクセスして構成を比較することができません。私の .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>
4

1 に答える 1

47

問題が見つかりました。問題はフォルダ構造でした。Maven は /src/main/java/ 構造を想定しています。私の構造は異なっていて、POM.xml で上書きされませんでした。標準パスに一致させるか、POM.xml でパスを上書きすると、問題が修正されました。

于 2013-06-19T14:08:32.347 に答える