【问题标题】:maven: execute without actually building anythingmaven:在不实际构建任何东西的情况下执行
【发布时间】:2020-01-17 11:26:12
【问题描述】:

我有一个在 pom 文件中有最终版本的项目,比如说 12.3.45 。 我前段时间已经为这个版本构建了代码,所有构建的 jar 都在本地 maven repo 中。

然后在某个时候我运行了 mvn clean,所以所有的目标文件夹都被删除了。

现在我想使用 mvn exec:java 尽快执行一些代码。最好不要建造任何东西,因为为什么不呢?在某个时候所有的 jar 都已经构建好了,我知道在那之后没有代码更改。如何强制 maven 尽可能快地执行代码,而不是重新编译任何东西,而只是重用本地 repo 中的 jars? 谢谢。

【问题讨论】:

  • 我不认为,这在不构建 maven 项目来执行 java 类的情况下是可能的。其他人可以对此发表评论。
  • gradle.properties 位于 GRADLE_USER_HOME 目录中,或者如果您愿意,可以在 .gradle 目录中创建。

标签: java maven maven-exec-plugin


【解决方案1】:
  • 如果您的工件位于本地或远程存储库中,您可以将它们用作依赖项。
  • 您可以使用 exec-maven-plugin 的选项 includeProjectDependencies 或 includePluginDependencies 在 java 执行中使用它们 https://www.mojohaus.org/exec-maven-plugin/java-mojo.html#includePluginDependencies。 includeProjectDependencies 选项默认启用 (true)。
  • 您可以执行 exec-maven-plugin 而无需使用mvn exec:java 命令构建任何内容

说明:

要运行 exec-maven-plugin,您需要一个主类来运行。我假设你的项目中有一个。如果您不这样做 - 您需要使用主类创建一个单独的项目。

  1. 创建一个空白的 maven 项目。
  2. 在项目中添加 exec-maven-plugin 配置。设置主类
<build>
    <plugins>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
                <goals>
                    <goal>java</goal>
                </goals>
                <configuration>
                    <mainClass>pack.App</mainClass>
                </configuration>
        </plugin>
    </plugins>
</build>
  1. 将您的工件作为项目的依赖项包含在内
<dependencies>
    <dependency>
        <groupId>my.group</groupId>
        <artifactId>myartifact</artifactId>
        <version>12.3.45</version>
    </dependency>
</dependencies>
  1. 运行mvn exec:java 以从my.group.myartifact 工件执行com.my.package.MyMainClass 主类

编辑

  • includeProjectDependencies 选项默认启用(true)

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-06-10
  • 2013-05-14
  • 2012-10-18
  • 1970-01-01
  • 1970-01-01
  • 2013-03-15
相关资源
最近更新 更多