只有一个 JAR Maven Archetype 文件,如何生成新项目?

Having only a JAR Maven Archetype file, how can it be generated a new project?

我刚开始为 IntelliJ 中的 Scala 项目使用 Maven 3。

我已经按照 this 指南生成了一个 JAR 文件。

我将 archetype.jar 移动到我要创建新项目的目录。但我的问题是:

  1. 这个文件是独立的吗?够了吗?它不适用于命令 "mvn archetype:generate"
  2. 是否可以在没有任何存储库干预的情况下使用jar文件?所以我可以和同事们分享。
  3. 最好的方法是什么,我一直在研究,所有指南仅基于存储库而不是本地工作。即使是本地存储库也只包含带有 id 而不是内容的 xmls 文件。

你问的是一个复杂的问题...我将尝试总结一下我所知道的,让我们看看它是否有帮助。

您问题的答案:

1) 如果在生成 archtype 等之后只有基本的 Maven 项目结构,如果 运行 maven clean install 并且项目生成了一个 jar,理论上应该可以立即执行从命令行和独立。

但是,当您向小型项目添加依赖项时,并非所有依赖项都会自动构建到独立 jar 中,有时您必须告诉 maven 将它们捆绑到其中。

Maven Shade 插件 - 将所有需要的依赖项添加到您的 jar

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>shade</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <transformers>
                    <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                        <mainClass>MainApp</mainClass>
                    </transformer>
                    <transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
                </transformers>
                <shadedArtifactAttached>true</shadedArtifactAttached>
                <shadedClassifierName>launcher</shadedClassifierName>
            </configuration>
        </plugin>
    </plugins>
</build>

2) 您不需要集成到任何存储库,建议将其用于更广泛的项目,以便您可以将工件发布到您公司的 Repo,以便于开发人员之间使用

3) 最简单的方法是在 Intellij 本身中创建一个新项目,将 Maven 指定为项目类型,这将为您提供默认的项目结构。然后在 pom 文件中指定我在上面粘贴的构建块,你基本上可以开始了......如果你还需要依赖项 运行 你自己的代码,你需要将它们添加到依赖项块中。

于是,我终于在生成之前使用了如下命令:

mvn install:install-file -Dfile=<path-to-jar-archetype-file> -DgroupId=<groupId> -DartifactId=<artifactId> -Dversion=<version> -Dpackaging=jar

执行该命令后,jar 将安装到您的本地存储库中。您可以使用例如 IntelliJ 生成项目或转到要生成项目的路径并...

mvn archetype:generate