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

时间:2018-06-14 14:41:31

标签: scala maven intellij-idea maven-3 maven-archetype

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

我在this指南后生成了一个JAR文件。

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

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

2 个答案:

答案 0 :(得分:0)

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

您的问题的答案:

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文件中,然后指定我粘贴在上面的构建块,你基本上很好......如果你需要Dependencies也运行你自己的代码,你需要在Dependencies块中添加它们。

答案 1 :(得分:0)

所以,我在生成之前最终使用了以下命令:

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

执行命令后,jar会安装在您的本地仓库中。您可以使用例如IntelliJ生成项目,或者转到要生成项目的路径...

mvn archetype:generate