Sonatype有一个我想要部署jar文件的存储库,他们要求为应用程序,源代码和javadoc提供单独的文件:
示例:
example-application-1.4.7.pom
example-application-1.4.7.jar
example-application-1.4.7-sources.jar
example-application-1.4.7-javadoc.jar
在Scala SBT中,我有一个名为" package"它为项目生成jar文件,但只生成" example-application-1.4.7.jar"。
问题:如何生成其他两个jar文件?
答案 0 :(得分:3)
在Maven中,为了获得额外的-sources
和-javadoc
工件,请在POM文件中添加以下内容:
<build>
<plugins>
<!-- additional plugin configurations, if any.. -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>3.0.0</version>
<executions>
<execution>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.10.3</version>
<executions>
<execution>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
请注意上面的代码段:
执行
mvn clean package
您可以在target
文件夹中找到这两个额外的jar。
.pom
文件是在install
阶段生成的,但不会放在target
文件夹下。基本上,它是您的pom.xml
文件的副本,具有不同的扩展名,并在依赖中介过程中由Maven使用,以检查相关工件需要哪些传递依赖项。
执行
mvn clean install
Maven会在path_to_cache/.m2/repository/your_groupId/your_artifactId/your_version/
下的本地缓存(在您的计算机中)中安装工件。在此文件夹中,您还可以找到.pom
文件,通常您不需要分发(由Maven自动创建)。
进一步说明:您可能不希望在每个构建中生成这些额外的jar文件,因此为了加快正常构建并仅按需提供它们,您可以将上面的代码段包装在Maven profile中
您可以通过从build
部分删除上面的代码段并在您的pom末尾添加更多部分来实现此目的:
<profiles>
<profile>
<id>prepare-distribution</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>3.0.0</version>
<executions>
<execution>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.10.3</version>
<executions>
<execution>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
因此正常构建不再创建这些jar,但在执行以下内容时:
mvn clean install -Pprepare-distribution
你会反过来让他们回来。 -P
选项实际上是按需激活使用标识prepare-distribution
定义的配置文件。
使用Maven 3,默认配置文件已作为super pom的一部分执行,它执行完全相同的操作(源和javadoc工件),因此无需向现有项目添加任何内容。只需运行:
mvn clean install -Prelease-profile
或者,通过属性激活它
mvn clean install -DperformRelease=true
然而,正如超级pom中所指出的,此配置文件可能会在将来的版本中被删除(尽管从第一个Maven 3 版本到版本 3.3.9 到目前为止)
注意:将从超级POM的未来版本中删除发布配置文件
此警告背后的主要原因很可能是推动Maven Release Plugin的使用,useReleaseProfile
间接通过release:perform
目标的Maven in 5 minutes选项使用此配置文件。< / p>
正如评论所强调的那样,如果你不熟悉maven(特别是通过控制台),我肯定会推荐