0

要求

我正在重构 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 packagemvn source:jar package它分别创建了两个 jar 文件

  • db-0.0.1-SNAPSHOT.jar
  • db-0.0.1-SNAPSHOT-sources.jar

然后我可以将源附加到依赖项。

我的问题有两个

  1. 无论如何将源代码打包到与编译类相同的jar文件中,以及
  2. 这会自动将源代码附加到 Eclipse 中的依赖项,以便开发人员不需要自动执行吗?
4

1 回答 1

2

将源代码放入 JAR 是错误的方法。

您创建了两个 JAR(如您的问题所示)。这些 JAR 转到存储库。然后每个使用 JARS 的人都会自动获得-sources。在通常的 IDE 中,比如 Eclipse 和 IntelliJ,-sourcesJAR 会自动用于调试。

您应该将源插件添加到您的 POM,而不是两个 Maven 运行。然后-sources在正常构建期间创建 JAR。

于 2020-11-16T15:16:17.413 回答