如何在与Maven构建的战争中包含带有源代码的jar

时间:2016-08-21 16:41:46

标签: java maven

我有一个Maven多模块项目,然后我想将其中一个模块的源代码打包到jar中,并将它添加到WEB-INF / lib路径中的war(相同模块或另一个模块)。

然后,我尝试使用Maven Source Plugin,如下所示:

    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-source-plugin</artifactId>
        <version>3.0.1</version>
    <configuration>       
      <attach>true</attach>
    </configuration>
        <executions>
          <execution>
            <id>attach-sources</id>
            <goals>
              <goal>jar</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>

然后将其添加为普通依赖项,如下所示:

<dependency>
    <groupId>myModuleName</groupId>
    <artifactId>myArtifactName</artifactId>
    <version>1.0</version>
</dependency>

问题在于,当我使用简单的命令行运行构建时

  

mvn clean install

我收到的信息有误,他找不到包含源代码的工件。看起来Maven首先寻找依赖关系然后构建它。

如何正确配置?

1 个答案:

答案 0 :(得分:1)

源包进入war文件没有意义。使用maven-source-plugin,如果你只需要在一个模块中拥有它,那么目标jar-no-fork会更好......

此外,如果您希望将war模块中的类作为lib文件夹中的jar文件,最简单的解决方案是使用maven-war-plugin的配置:

<configuration>
  <attachClasses>true</attachClasses>
  <archiveClasses>true</archiveClasses>
</configuration>

这将导致在src/main/java中的类中创建一个jar文件。