【发布时间】:2021-02-27 17:55:21
【问题描述】:
要求
我正在重构 Java 应用程序,并试图将代码从 war 文件中移出到 jar 文件中,以便可以在许多不同的 Web 应用程序中使用它。但是,其中一项要求是开发人员仍然需要在库中使用断点。为此,我相信我需要将源代码与编译后的代码打包在一起。下面是构建生命周期
构建生命周期
<build>
<pluginManagement><!-- lock down plugins versions to avoid using Maven
defaults (may be moved to parent pom) -->
<plugins>
<!-- clean lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#clean_Lifecycle -->
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>3.1.0</version>
</plugin>
<!-- default lifecycle, jar packaging: see https://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging -->
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.2</version>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.1</version>
</plugin>
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<version>3.0.2</version>
</plugin>
<plugin>
<artifactId>maven-install-plugin</artifactId>
<version>2.5.2</version>
</plugin>
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.2</version>
</plugin>
<!-- site lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#site_Lifecycle -->
<plugin>
<artifactId>maven-site-plugin</artifactId>
<version>3.7.1</version>
</plugin>
<plugin>
<artifactId>maven-project-info-reports-plugin</artifactId>
<version>3.0.0</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<executions>
<execution>
<id>attach-sources</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</pluginManagement>
</build>
问题
当我运行 mvn package 和 mvn source:jar package 时,它分别创建了两个 jar 文件
- db-0.0.1-SNAPSHOT.jar
- db-0.0.1-SNAPSHOT-sources.jar
然后我可以将源附加到依赖项。
我的问题有两个
- 有没有办法把源代码和编译好的类打包成同一个jar文件,和
- 这是否会自动将源代码附加到 Eclipse 中的依赖项,以便开发人员无需自动执行此操作?
【问题讨论】:
-
首先您的所有配置都在插件管理中完成,其中 pluginManagement 旨在定义所用插件的版本等。但是您必须在 pluginManagement 区域之外添加 maven-source-plugin ... 进一步打包将源代码放入现有 JAR 没有意义,也不是一个好主意,因为没有 IDE 能够正确识别。使用由 IDE 标识的单独 jar (-sources)... 在 Eclipse 中,您可以配置 -sources 包的下载,请参阅 Eclipse 的文档...