【问题标题】:Having only a JAR Maven Archetype file, how can it be generated a new project?只有一个 JAR Maven Archetype 文件,如何生成一个新项目?
【发布时间】:2018-11-24 09:16:29
【问题描述】:

我刚开始在 IntelliJ 中使用 Maven 3 进行 Scala 项目。

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

    回答您的问题:

    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 文件中指定我在上面粘贴的构建块,你基本上可以开始了……如果你需要依赖项也不能运行你自己的代码,你需要将它们添加到一个依赖项块中。

    【讨论】:

    • 谢谢@RobertSquire,但是,我该怎么做才能根据原型 jar 文件生成一个新项目?
    • 可以直接新建一个Maven Intellij项目,然后指定打包为jar吗?我很确定这就是你想要的
    • 我的疑问是,-好的,我有一个 archetype.jar 文件,现在我可以用它做什么来生成项目
    【解决方案2】:

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

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

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

    mvn archetype:generate
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-24
      • 2010-11-08
      • 2019-06-19
      • 1970-01-01
      相关资源
      最近更新 更多