0

ここに私のpom.xmlがあります

<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>
    <url>http://maven.apache.org</url>

    <name>SomeProject</name>

    <groupId>com.test.te</groupId>
    <artifactId>testjar</artifactId>
    <version>1.1.6</version>
    <packaging>jar</packaging>

    <dependencies>
    ....
    ....
    </dependencies>
    <build>

        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.conf</include>
                    <include>**/*.java</include>
                </includes>
            </resource>
        </resources>

        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <configuration>
                    <source>1.6</source>
                    <target>1.6</target>
                </configuration>
                <executions>
                    <execution>
                        <id>drive</id>
                        <goals><goal>jar</goal></goals>
                            <phase>install</phase>
                            <configuration>
                                <finalName>driver</finalName>
                                <includes>
                                    <include>com/test/te/p1/*.java<include>
                                    <include>com/test/te/p1/*.class</include>
                                </includes>
                            </configuration>
                        </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

これが私がこれを実行する方法です

mvn clean install

ビルド出力の最後の数行を次に示します。

[INFO] [jar:jar {execution: default-jar}]
[INFO] Building jar: /home/mycp/workspace/SomeProject/target/testjar-1.1.6.jar
[INFO] [install:install {execution: default-install}]
[INFO] Installing /home/mycp/workspace/SomeProject/target/testjar-1.1.6.jar to /home/mycp/.m2/repository/com/test/te/testjar/1.1.6/testjar-1.1.6.jar
[INFO] [jar:jar {execution: driver}]
[INFO] Building jar: /home/mycp/workspace/TestProject/target/driver.jar
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 11 seconds
[INFO] Finished at: Wed Oct 28 17:27:10 IST 2015
[INFO] Final Memory: 129M/888M
[INFO] ------------------------------------------------------------------------
  • 2 番目の jar (driver.jar) がバージョン管理されていないのはなぜですか (driver-1.1.6.jar) ?
  • 2 番目の jar がローカル リポジトリにインストールされないのはなぜですか?

これを行う方法?

私の要件は、2 つの jar testjar-${project.version}.jar driver-${project.version}.jarを作成し、それら 2 つを 2 つの異なるアーティファクトにインストールすることです。

/home/mycp/.m2/repository/com/test/te/testjar /${project-version}/testjar-${project.version}.jar _ _

/home/mycp/.m2/repository/com/test/te/ driver /${project-version}/ driver-${project.version}.jar

4

1 に答える 1

3

2 番目の jar (driver.jar) がバージョン管理されていないのはなぜですか (driver-1.1.6.jar) ?

maven-jar-pluginこれは、その名前が である必要があることdriverをに明示的に伝えたためです<finalName>driver</finalName>。バージョンを追加する場合は、次の構成が必要です<finalName>driver-${project.version}</finalName>

2 番目の jar がローカル リポジトリにインストールされないのはなぜですか?

これは、 のフェーズを指定したためです。<phase>install</phase>実行後にdefault-install実行されます。これは、アーティファクトをローカル リポジトリにインストールする実行です。代わりに、その実行をpackageフェーズにバインドする必要があります。


これは、 に必要な設定ですmaven-jar-plugin。別の jar を作成するには分類子が必要です。

<execution>
  <id>drive</id>
  <goals>
    <goal>jar</goal>
  </goals>
  <phase>package</phase>
  <configuration>
    <finalName>driver-${project.version}</finalName>
    <classifier>classifier</classifier>
    <includes>
      <include>com/test/te/p1/*.java</include>
      <include>com/test/te/p1/*.class</include>
    </includes>
  </configuration>
</execution>

<resources>補足として、 Java および conf ファイルを含む POMの要素も構成していることに気付きました。あなたはそれを持ってはいけません。より具体的には、すべてのリソースを の下に配置しsrc/main/resources、すべての Java ファイルを の下に配置する必要がありますsrc/main/java。その後、その構成は必要ありません。


コメントに従って、分類子を追加できない場合は、代わりにドロップmaven-jar-pluginして使用する必要がありますmaven-assembly-plugin。これは、作業を開始するための単純なアセンブリ記述子です。このファイルを の下に置きますsrc/main/assembly/assembly.xml

<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3 http://maven.apache.org/xsd/assembly-1.1.3.xsd">
    <id>driver</id>
    <formats>
        <format>jar</format>
    </formats>
    <includeBaseDirectory>false</includeBaseDirectory>
    <dependencySets>
        <dependencySet>
            <useProjectArtifact>true</useProjectArtifact>
            <unpackOptions>
                <includes>
                    <include>com/test/te/p1/*.class</include>
                </includes>
            </unpackOptions>
            <unpack>true</unpack>
        </dependencySet>
    </dependencySets>
</assembly>

POM で次の構成を使用します。

<plugin>
    <artifactId>maven-assembly-plugin</artifactId>
    <version>2.5.5</version>
    <configuration>
        <descriptors>
            <descriptor>src/main/assembly/assembly.xml</descriptor> <!-- point to the location of the assembly.xml file in your project structure -->
        </descriptors>
        <appendAssemblyId>false</appendAssemblyId>
        <finalName>driver-${project.version}</finalName>
    </configuration>
    <executions>
        <execution>
            <phase>prepare-package</phase>
            <goals>
                <goal>single</goal>
            </goals>
        </execution>
    </executions>
</plugin>
于 2015-10-28T12:22:17.373 に答える