【问题标题】:Maven build sub projects using root pomMaven使用root pom构建子项目
【发布时间】:2013-09-26 13:16:33
【问题描述】:

我有不同的独立 maven 项目,想用单个 pom 构建它。所以我正在使用以下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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>a.b</groupId>
<artifactId>my-sdk</artifactId>
<name>my-sdk</name>
<version>1.0</version>
<packaging>pom</packaging>
<description>Generating SDK</description>

<modules>
    <module>project1</module>
    <module>project2</module>
    <module>project3</module>
</modules>

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.5.1</version>
            <configuration>
                <source>1.6</source>
                <target>1.6</target>
            </configuration>
        </plugin>

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-javadoc-plugin</artifactId>
            <version>2.9</version>
            <executions>
                <execution>
                    <id>process-sources</id>
                    <phase>process-classes</phase>
                    <goals>
                        <goal>jar</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

        <plugin>
            <artifactId>maven-antrun-plugin</artifactId>
            <executions>
                <execution>
                    <phase>process-classes</phase>
                    <configuration>
                        <tasks>
                            <ant antfile="build.xml" target="init" />
                        </tasks>
                    </configuration>
                    <goals>
                        <goal>run</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

<repositories>
    <repository>
        <id>jboss-repo</id>
        <url>http://repository.jboss.org/maven2</url>
    </repository>
</repositories>

我有以下问题:-

  1. Javadoc 没有生成,所以我做错了。如果我运行“mvn javadoc:javadoc package”命令,它会生成 java doc。但如果我运行“mvn package”,它不会。

  2. project2中有生成fat jar的汇编插件,生成project2的jar但无法生成fat jar。如果我独立构建project2,它会成功生成fat jar。

以下部分来自 project2 pom 以生成胖 jar,如果我独立运行构建,它会成功运行

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.5.1</version>
            <configuration>
                <source>1.6</source>
                <target>1.6</target>
            </configuration>
        </plugin>
        <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <configuration>
                <appendAssemblyId>false</appendAssemblyId>
                <descriptorRefs>
                    <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>
            </configuration>
            <executions>
                <execution>
                    <id>make-assembly</id>
                    <phase>package</phase>
                    <configuration>
                        <archive>
                            <manifest>
                                <mainClass>[MAIN CLASS]</mainClass>
                            </manifest>
                            <manifestEntries>
                                <Class-Path>.</Class-Path>
                            </manifestEntries>
                        </archive>
                    </configuration>
                    <goals>
                        <goal>assembly</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

任何建议。

【问题讨论】:

    标签: maven


    【解决方案1】:

    我会说检查你的两个问题的文档;-)

    javadoc (http://maven.apache.org/plugins/maven-javadoc-plugin/plugin-info.html)

    javadoc:jarjavadoc:javadoc 不应用于聚合器项目,请使用 javadoc:aggregate 或(在您的情况下) javadoc:aggregate-jar

    大会 (http://maven.apache.org/plugins/maven-assembly-plugin/assembly-mojo.html)

    首先,assembly:assembly 已被弃用,其次,它只能在命令行中使用。我想使用目标 single 会有所帮助。

    【讨论】:

    • javadoc:aggregate 在单个文件夹中为所有项目生成 javadoc,但我想为使用 root pom 的个人生成 javadoc,但可以这样做。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-09
    • 2016-07-20
    • 2016-01-04
    • 2023-03-08
    • 2016-02-09
    相关资源
    最近更新 更多