首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

未编译使用maven exec-maven-plugin“target”文件夹生成的Java类

基础概念

maven exec-maven-plugin 是 Maven 构建工具中的一个插件,它允许你在 Maven 构建生命周期的任何阶段执行外部应用程序或脚本。这个插件特别有用,因为它可以直接从 Maven 命令行运行 Java 应用程序,而无需先编译成 JAR 文件。

相关优势

  1. 简化执行:可以直接从 Maven 命令行运行 Java 应用程序,无需手动编译和打包。
  2. 集成测试:可以在构建过程中轻松运行集成测试或任何其他需要执行的脚本。
  3. 灵活性:支持多种操作系统和环境,易于配置。

类型与应用场景

  • 类型:主要分为 exec:execexec:java 两种类型。
    • exec:exec:用于执行外部命令。
    • exec:java:用于直接运行 Java 类。
  • 应用场景
    • 开发和调试:快速运行和测试 Java 应用程序。
    • 持续集成/持续部署(CI/CD):在构建过程中自动运行测试脚本或应用程序。
    • 自动化任务:执行任何需要在构建过程中运行的脚本或命令。

遇到的问题及原因

如果你在使用 maven exec-maven-plugin 时发现 target 文件夹生成的 Java 类未被编译,可能的原因包括:

  1. Maven 生命周期阶段不正确:确保你在正确的 Maven 生命周期阶段调用插件。例如,如果你在 validate 阶段调用插件,可能还没有编译 Java 类。
  2. 插件配置错误:检查 pom.xml 中的插件配置是否正确。
  3. 依赖问题:确保所有必要的依赖项都已正确声明并在本地仓库中可用。

解决方法

正确配置插件

pom.xml 中正确配置 exec-maven-plugin,例如:

代码语言:txt
复制
<build>
    <plugins>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <version>3.0.0</version>
            <executions>
                <execution>
                    <goals>
                        <goal>java</goal>
                    </goals>
                    <configuration>
                        <mainClass>com.example.MainClass</mainClass>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

确保编译阶段完成

在执行 exec:java 目标之前,确保已经运行了编译阶段:

代码语言:txt
复制
mvn compile exec:java

或者,你可以在 pom.xml 中配置插件在 compile 阶段之后执行:

代码语言:txt
复制
<executions>
    <execution>
        <phase>compile</phase>
        <goals>
            <goal>java</goal>
        </goals>
    </execution>
</executions>

检查依赖项

确保所有依赖项都已正确声明并在本地仓库中可用:

代码语言:txt
复制
<dependencies>
    <!-- 添加所有必要的依赖项 -->
</dependencies>

示例代码

假设你有一个简单的 Java 应用程序 MainClass

代码语言:txt
复制
package com.example;

public class MainClass {
    public static void main(String[] args) {
        System.out.println("Hello, World!");
    }
}

pom.xml 中配置插件:

代码语言:txt
复制
<build>
    <plugins>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <version>3.0.0</version>
            <executions>
                <execution>
                    <goals>
                        <goal>java</goal>
                    </goals>
                    <configuration>
                        <mainClass>com.example.MainClass</mainClass>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

然后运行:

代码语言:txt
复制
mvn compile exec:java

这将编译你的 Java 类并在 target 文件夹中生成类文件,然后运行 MainClass

通过以上步骤,你应该能够解决 target 文件夹生成的 Java 类未被编译的问题。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

常用Maven插件介绍(收藏大全)

进一步说,每个任务对应了一个插件目标(goal),每个插件会有一个或者多个目标,例如maven- compiler-plugin的compile目标用来编译位于src/main/java/目录下的主源码...,testCompile目标用来编译位于src/test/java/目录下的测试源码。...然而在当你想要跳过测试、排除某些 测试类、或者使用一些TestNG特性的时候,了解maven-surefire-plugin的一些配置选项就很有用了。...build-helper-maven-plugin的另一个非常有用的目标是attach-artifact,使用该目标你可以以classifier的形式选取部分项目文件生成附属构件,并同时install到本地仓库...有时候,为了简单的 演示一个命令行Java程序,你可以在POM中配置好exec-maven-plugin的相关运行参数,然后直接在命令运行 mvn exec:java 以查看运行效果。

3K10
  • Maven入门教程

    maven默认的文件存放结构如下: 每一个阶段的任务都知道怎么正确完成自己的工作,比如compile任务就知道从src/main/java下编译所有的java文件,并把它的输出class文件存放到target...然而在当你想要跳过测试、排除某些测试类、或者使用一些TestNG特性的时候,了解maven-surefire-plugin的一些配置选项就很有用了。...exec-maven-plugin http://mojo.codehaus.org/exec-maven-plugin/ exec-maven-plugin很好理解,顾名思义,它能让你运行任何本地的系统程序...有时候,为了简单的演示一个命令行Java程序,你可以在POM中配置好exec-maven-plugin的相关运行参数,然后直接在命令运行mvn exec:java 以查看运行效果。...,准备打包 mvn compile 编译项目的源代码 mvn process-classes 后处理编译生成的文件,例如对Java类进行字节码增强(bytecode

    1.3K100

    Maven快速学习教程

    compile 编译项目的源代码。 process-classes 从编译后生成生成的文件,例如在Java类上执行字节码增强。...test-compile 将测试源代码编译到测试目标目录 process-test-classes 从测试编译后post-process生成文件,例如在Java类上执行字节码增强。...这通常会导致包的一个未打包的、经过处理的版本。(Maven 2.1及以上) package 使用已编译的代码,并将其打包成可部署格式,例如JAR。...maven默认的文件存放结构如下: 每一个阶段的任务都知道怎么正确完成自己的工作,比如compile任务就知道从src/main/java下编译所有的java文件,并把它的输出class文件存放到target...,准备打包 mvn compile 编译项目的源代码 mvn process-classes 后处理编译生成的文件,例如对Java类进行字节码增强(bytecode

    2.4K40

    maven mvn 命令行 编译打包

    * 一行命令 # 切换到项目根目录 mvn clean && mvn compile && mvn package && start target * 配置好jdk JAVA_HOME=Java安装路径...Windows 环境变量,并将其指向你的 Maven 文件夹 ** Path环境变量添加 %M2_HOME%\bin * 查看mvn版本 mvn -version Apache Maven 3.5.3...点击进入下载页 目前官方刚对1.8做了一次bug升级,强烈建议使用191或者192的小版本,这里就选择8u191. 2....选择jdk的安装目录,建议大家就算不使用默认路径,也放在C盘,除非你的C盘空间告急。 3、直接点击下一步,出现下图的告警信息。 只能说最近jdk大版本更新太快了,19年1月官方停止维护。...又弹出个窗口,还要选择文件夹,不是安装程序出问题了,仔细一下,安装的不是jdk,是jre。 这部分在“版本选择”文章里也说过,jre是用于运行时的包,是jdk的一部分。

    2.4K20

    maven: 打包可运行的jar包(java application)及依赖项处理

    IDE环境中,可以直接用exec-maven-plugin插件来运行java application,类似下面这样: 1 2 org.codehaus.mojo... 3 exec-maven-plugin 4 1.2.1 5 类,然后用mvn exec:exec来运行,但是部署到生产环境中时,服务器上通常并不具备maven环境,只能用 java -jar xxx.jar这种方式来运行,下面是一些处理细节: 一、依赖项的处理...=target/lib 命令,把依赖的jar包全部导出到target/lib这个目录下 二、利用maven-jar-plugin修改META-INF\MANIFEST.MF 清单文件 java application...包在什么地方,第6行表示main函数的入口类,默认情况下mvn clean package生成的jar包里,清单文件上并没有这2行,需要在pom.xml中添加插件 1 2

    2.1K90

    使用 java 手动执行生成的类文件

    使用 java 手动执行生成的类文件# 下面以执行使用 mvn compile 编译好的 cn.gson.oasys.OasysApplication Java 类为例。...你可以使用 java 命令直接运行编译后的 Java 类文件,但是你需要明确指定所需要的类路径 -cp 或者 -classpath,包括你的项目的所有依赖库。...然后,使用 java 命令执行 main 方法,你需要将项目的 target/classes 目录和所有的依赖库一起加入到类路径 -cp 中。...:target/dependency/* 指定了类路径,包含了你的项目编译后的类文件和所有的依赖库。...因此,一般推荐直接使用 Maven 来运行你的 Spring Boot 应用。 注:本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。

    16630

    maven学习(上)- 基本入门用法

    4 配置代理服务器(可选) maven项目在编译、测试、打包里,会需要从maven的中央仓库(即:maven组织公布在互联网上的一个站点,里面已经收录了目前绝大多数主流的jar包)下载jar包等文件,如果使用代理服务器上网...java约定用于存放源代码,src/main/test用于存放单元测试代码,src/target用于存放编译、打包后的输出文件。...三、编译项目 先进入刚才创建项目的根目录 cd /d c:\test\maven-hello-world 然后执行 mvn clean compile 这样就能对项目进行编译了,编译后会自动在target...);再跑下单元测试,看下有什么不同 五、项目打包 通常我们会把java项目打包成jar包或war包,maven中打包的命令为 mvn clean package 运行完后,会在target目录下生成jar...另外: 有时候,我们的项目是一个类库,只是封装一些方法供其它项目引用,对于这种项目,我们可以用 mvn clean install 把生成的jar包,安装到“本地仓库”中,这样本机其它项目需要使用该jar

    77980

    从开发角度看四类企业应用架构1: 通过Maven编译并运行一个Java应用

    Web层:Web层组件在应用程序服务器内部运行,并生成可由客户端层中的组件呈现或使用的HTML或其他标记。...Maven是一个项目管理工具,它使用声明性方法(在项目文件夹根目录下的一个名为pom.xml的XML文件中)来指定如何构建,打包,执行(对于Java SE应用程序)以及与依赖关系一起部署应用程序 信息。...要构建、打包和运行仅使用Java SE API的独立应用程序(例如使用Maven的基于命令行的待办事项列表应用程序),可以使用如下命令: mvn clean package java -jar target...在这个项目中,使用exec-maven-plugin从命令行或从JBoss Developer Studio中运行项目中的主类。...确认可以看到来自Maven的BUILD SUCCESS消息,并且todojse-1.0.jar已成功构建并复制到todojse/target文件夹。 接下来,运行应用: ? 运行起来以后: ?

    1.5K20

    一个小时学会Maven

    compile 编译项目的源代码。 process-classes 从编译后生成生成的文件,例如在Java类上执行字节码增强。...test-compile 将测试源代码编译到测试目标目录 process-test-classes 从测试编译后post-process生成文件,例如在Java类上执行字节码增强。...这通常会导致包的一个未打包的、经过处理的版本。(Maven 2.1及以上) package 使用已编译的代码,并将其打包成可部署格式,例如JAR。...每一个阶段的任务都知道怎么正确完成自己的工作,比如compile任务就知道从src/main/java下编译所有的java文件,并把它的输出class文件存放到target/classes中。...有时候,为了简单的演示一个命令行Java程序,你可以在POM中配置好exec-maven-plugin的相关运行参数,然后直接在命令运行mvn exec:java 以查看运行效果。

    2.7K30

    聊聊如何进行代码混淆

    生成的新名称越短,字节代码越小。在名称混淆的字节代码中,包,类,字段和方法名称已重命名,并且永远不能恢复原始名称。不幸的是,控制流程仍然清晰可见。...通常情况下,选择和循环等逻辑构造会被更改,因此它们不再具有直接等效的Java源代码。流模糊的字节码通常强制反编译器将一系列标签和非法的goto语句插入到它们生成的源代码中。...因此,对于对安全性要求很高的场合,仅仅使用代码混淆并不能保证源代码的安全。 常用的混淆工具 1、yGuard yGuard是一款免费的Java混淆器(非开源),它有Java和.NET两个版本。...官网地址:https://www.yworks.com/products/yguard 2、proguard proguard是一个免费的 Java类文件的压缩,优化,混肴器。...如何制作一个maven插件,可以参考我之前的文章 聊聊如何自定义实现maven插件 其实在springboot项目使用allatori,还遇到一点小坑。这个小坑是啥,留个悬念。下篇文章水一篇。

    3.7K40

    maven的生命周期及常用命令的使用

    maven可以使用命令,完成项目的清理,编译,测试等 maven的插件: maven命令执行时,真正完成功能的是插件,插件就是一些jar文件,一些类。...方法是测试的基本单位(单元). maven借助单元测试,批量的测试你类中的大量方法是否符合预期的。 2)使用步骤 1.加入依赖,在pom.xml加入单元测试依赖 的作用就是清除 target 目录的 2. mvn compile mvn compile 命令用来编译 Hello\src\main\java\com\xdr630下的 java 文件的...,编译main/java/目录下的java 为class文件,把main/resources目录下的所有文件都拷贝到target/classes目录下 ?...重新编译一次:mvn compile ? ? resources 插件的作用就是把resources 文件夹下的文件 复制到 target\classes下 ?

    42030

    Maven实战之旅第六篇——maven常用指令

    maven celan:清理 刚刚我们看到了,使用test指令,可以在target中生成一些文件,现在我们再执行以下clean指令,右键pom.xml文件->run as 在goals中输入clean...同样如果是第一次执行,maven也会自动下载一些相关的插件。执行完毕之后,你会发现target文件夹下的文件都被清空了,这就是clean的作用。将maven指令包括测试,编译,打包等生成的文件清空。...maven compile:编译 compile是对我们的maven项目进行编译操作,执行该指令后,会在target文件夹下看到我们执行编译生成的编译文件。...执行完毕之后可以在workspace/mana-core/target中看到的生成的编译文件。 ? maven package:打包 执行package指令后可以将我们的项目打包成jar文件。...生成idea项目:mvn idea:idea 生成站点目录: mvn site Maven指令有时候也会组合着使用 只打包不测试:mvn -Dtest package 编译测试的内容

    2.5K20

    Maven(二)Maven项目的创建(命令、myeclipse)及生命周期

    上一篇给大家介绍了Maven的概念和仓库的一些信息,接下来给大家分享一下使用命令和MyEclipse创建Maven项目 一、使用命令管理Maven项目 1.1、创建Maven java项目  1)创建一个文件夹...目录java源码编译生成class (target目录下) ?     ...编译成功之后,可以看到MavenJava项目的根目录下多了一个【target】文件夹,这个文件夹就是编译成功之后Maven帮我们生成的文件夹,     打开【target】文件夹,可以看到里面有一个【classes...】文件夹,【classes】文件夹中存放的就是Maven我们编译好的java类。...2)测试:mvn test    --src/test/java 目录编译     测试成功之后,可以看到MavenJava项目的根目录下多了一个【target】文件夹,这个文件夹就是测试成功之后Maven

    1.5K90
    领券