web-dev-qa-db-ja.com

アセンブリアーカイブビンの作成エラー:少なくとも1つのファイルを設定する必要があります

私はmod1という名前のモジュールを持つMavenマルチモジュールプロジェクトを持っていますが、これをフォルダーに追加しようとしています/project jarsmvn Assembly:assembly app pom.xmlがあるappフォルダーから。

エラー:

[ERROR] Failed to execute goal org.Apache.maven.plugins:maven-Assembly-plugin:2.3:single (Assembly) on project wrapper: Failed to create Assembly
: Error creating Assembly archive bin: You must set at least one file. -> [Help 1]

プロジェクトのフォルダー構造:

app
    | pom.xml
    | src    | main     | ...
wrapper
    | pom.xml
    | src    | main     | ...
mod1
    | pom.xml
    | src    | main     | ...

// After mvn Assembly:assembly

project jars
    | mod1.jar

mod1 pom.xml

<project>
  <groupId>org.test</groupId>
  <artifactId>mod1</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>jar</packaging>
</project>

ラッパーpom.xml

<groupId>org.test.app</groupId>
<artifactId>wrapper</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>

<build>
  <plugins>
    <plugin>
      <artifactId>maven-Assembly-plugin</artifactId>
      <version>2.3</version>
      <executions>
        <execution>
          <id>Assembly</id>
          <phase>package</phase>
          <goals>
            <goal>single</goal>
          </goals>
          <configuration>
            <descriptors>
              <descriptor>src/main/Assembly/modules-Assembly.xml</descriptor>
            </descriptors>
          </configuration>
        </execution>
      </executions>
    </plugin>
  </plugins>
</build>

記述子(src/main/Assembly/modules-Assembly.xml):

<Assembly>
    <id>bin</id>
    <baseDirectory>/</baseDirectory>

    <formats>
        <format>Zip</format>
    </formats>

    <includeBaseDirectory>false</includeBaseDirectory>

    <moduleSets>
        <moduleSet>
            <useAllReactorProjects>true</useAllReactorProjects>
            <includes>
                <include>org.test:mod1.jar</include>
            </includes>
            <binaries>
                <attachmentClassifier>jar-with-dependencies</attachmentClassifier>
                <outputDirectory>/project jars</outputDirectory>
                <unpack>false</unpack>
            </binaries>
        </moduleSet>
    </moduleSets>
</Assembly>

[〜#〜]更新[〜#〜]

アプリpom.xml

<project>
  <groupId>org.test</groupId>
  <artifactId>app</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>pom</packaging>

  <modules>
    <module>../mod1</module>
    <module>../wrapper</module>
  </modules>
</project>
9
Program-Me-Rev

プロジェクト「app」で「wrapper」と「mod1」の両方のモジュールを宣言する理由。アプリは依存ライブラリで「mod1」を使用する必要がありますか?

これを行う :

Add parent pom.xml and 3 modules :
    +app
    +wrapper
    +mod1

pomアプリ:

<dependency>
 <groupId>${groupId}</groupId>
 <artifactId>mod1</artifactId> 
</dependency>

<plugin>  
 <groupId>org.Apache.maven.plugins</groupId>  
 <artifactId>maven-jar-plugin</artifactId>   
 <configuration>  
  <archive>   
   <manifest>  
    <addClasspath>true</addClasspath>   
    <classpathPrefix>project/</classpathPrefix>  
  </manifest>  
</archive>  
</configuration>  
</plugin>

Assembly.xmlを作成し、<includes>および<excludes>を使用して依存関係をフィルター処理します。

アセンブリを作成するには、次の回答を使用してください。 Mavenビルドアセンブリと依存関係

1