Maven工程项目的创建(Eclipse)、打包及运行(Windows cmd)

本文详细介绍了如何在Windows环境下将Maven与Eclipse进行整合,包括设置Maven环境、新建Maven项目、编辑pom.xml配置文件、构建及打包Maven工程,并在Eclipse与CMD中运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前提条件:

  • Windows系统下安装好eclipse
  • Windows系统下安装好Maven
    参考链接: Maven安装教程.

步骤:

  1. 设置eclipse使用的Maven环境
    打开eclipse, 点击Windows–>选择Preferences

    左侧找到Maven --> Installations,点击右侧Add
    在这里插入图片描述
    选择Maven的安装目录,我这里是D:\soft\apache-maven-3.3.9
    在这里插入图片描述
    勾选上我们自己安装的Maven,点击Apply
    在这里插入图片描述
    左侧找到Maven–>User Settings, 点击Browse,选择Maven安装目录下的conf\settings.xml , 我这里是D:\soft\apache-maven-3.3.9\conf\settings.xml, 点击Apply and Close

在这里插入图片描述

  1. 使用Eclipse新建Maven工程

点击File --> New -->Other
在这里插入图片描述
找到Maven–>Maven Project, 点击Next
在这里插入图片描述

这里不用修改,直接点击Next
在这里插入图片描述
这里也不用修改,直接点击Next
在这里插入图片描述

这是比较重要的一步:
Group Id:是组织名称,一般写公司域名的反写,如:www.baidu.com应该写为com.baidu.www,这里写的是com.test
Artifact Id:是项目名称,写我们的项目名称,这里写的是HelloWorld
写好Group Id和Artifact Id后,点击Finish
在这里插入图片描述
Maven项目自动构建完成后,会出现如下方框中的目录。
其中pom.xml是一个很重要的文件,项目所依赖的jar包都在这里配置
在这里插入图片描述

  1. 编辑pom.xml

编辑pom.xml:双击pom.xml文件–>在eclipse右下方找到pom.xml
在这里插入图片描述

修改pom.xml,在 </ project >前增加下面内容, 其中< mainClass >与< /mainClass > 之间的内容表示主类,注意修改为实际工程的主类,改为“主类所在包名.主类名”, 这里改为: com.test.HelloWorld.App, 记得保存文件

<build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-shade-plugin</artifactId>
        <version>3.1.0</version>
        <executions>
          <execution>
            <phase>package</phase>
            <goals>
              <goal>shade</goal>
            </goals>
            <configuration>
              <transformers>
                <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                <!-- main()所在的类,注意修改 -->
                  <mainClass>com.test.HelloWorld.App</mainClass>
                </transformer>
              </transformers>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>

修改好后,效果如下图:
在这里插入图片描述
刷新工程: 右键工程名–>Refresh
在这里插入图片描述

Maven工程在构建时已经自动帮我们把打印Hello World的java程序写好。我先现在来执行它:右键src/main/java包下的App.java(注意要是src/main/java包下),Run As -->Java Application
在这里插入图片描述
在eclipse内部运行,结果如下:
在这里插入图片描述

  1. 打包Maven工程
    复制Maven工程所在的目录 :右键我们的Maven工程HelloWorld–>Properties在这里插入图片描述
    点击左侧Resource,Location的内容为我们Maven工程所在的目录,复制Location的路径
    在这里插入图片描述
    按Win + R 输入cmd 调出cmd.exe命令框
    在这里插入图片描述

在这里插入图片描述
刚刚复制的工程路径为 D:\EclipseProject\910\HelloWorld
现在切换到D盘,输入 d:, 回车
在这里插入图片描述
输入 cd D:\EclipseProject\910\HelloWorld
在这里插入图片描述
打包工程:执行mvn clean package
在这里插入图片描述
打包成功会出现如下BUILD SUCCESS字样
在这里插入图片描述
查看target目录,出现HelloWorld-0.0.1-SNAPSHOT.jar文件
执行命令:dir target
在这里插入图片描述

  1. 在cmd运行Maven工程
    执行命令: java -jar target/HelloWorld-0.0.1-SNAPSHOT.jar
    在这里插入图片描述
    从这里可以看出,在打包后运行的结果与在eclipse内部运行的结果是一致的。

完成!

<think>我们面对的问题是在没有安装Maven的机器上,使用MyEclipse2018打包SpringBoot项目,并且解决打包运行找不到主类的问题。解决方案步骤:1.使用MyEclipse自带的Maven插件进行打包(即使系统没有安装Maven,因为MyEclipse通常内置了Maven插件)。2.配置SpringBootMaven插件以确保可执行JAR包含正确的清单文件(Main-Class和Start-Class)。3.如果MyEclipse没有内置Maven,我们可以使用Eclipse的导出功能来打包(生成可运行的JAR)。但是,由于问题描述中明确提到“cmd没有装Maven”,所以我们需要考虑在没有Maven命令行的情况下进行打包。这里提供两种方法:方法一:使用MyEclipse内置的Maven插件进行打包(推荐)方法二:使用MyEclipse的导出可运行JAR功能(适用于没有Maven环境的情况)下面分别说明:方法一:使用MyEclipse内置的Maven插件打包步骤:1.确保项目是一个Maven项目(有pom.xml)。2.在MyEclipse中,右键项目->RunAs->Mavenbuild...(如果第一次运行,需要配置目标)3.在Goals中输入:cleanpackage4.运行后,在项目的target目录下会生成jar包。但是,如果找不到主类,可能是因为SpringBootMaven插件没有正确配置。在pom.xml中需要配置spring-boot-maven-plugin:在pom.xml的build/plugins部分添加:```xml<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>2.0.9.RELEASE</version><!--请根据实际版本调整--><executions><execution><goals><goal>repackage</goal></goals></execution></executions></plugin></plugins></build>```方法二:使用MyEclipse的导出功能(适用于非Maven项目或无法使用Maven插件的情况)步骤:1.右键项目->Export->Java->RunnableJARfile2.在Launchconfiguration中选择一个包含主类的运行配置(如果没有,先创建一个运行配置:右键项目->RunAs->JavaApplication,选择主类运行一次)3.选择导出路径,并在Libraryhandling选项中选择“PackagerequiredlibrariesintogeneratedJAR”4.导出后,即可通过java-jaryourjar.jar运行但是,SpringBoot项目通常有很多依赖,使用这种方式可能会遇到类加载问题。因此,更推荐使用Maven方式。如果使用方法一打包后仍然找不到主类,请检查生成的jar包中的META-INF/MANIFEST.MF文件,确保有Main-Class和Start-Class属性。示例MANIFEST.MF内容:```Manifest-Version:1.0Implementation-Title:your-appImplementation-Version:0.0.1-SNAPSHOTStart-Class:com.example.YourApplicationSpring-Boot-Classes:BOOT-INF/classes/Spring-Boot-Lib:BOOT-INF/lib/Build-Jdk-Spec:1.8Spring-Boot-Version:2.0.9.RELEASECreated-By:MavenArchiver3.4.0Main-Class:org.springframework.boot.loader.JarLauncher```注意:Main-Class是org.springframework.boot.loader.JarLauncher,而Start-Class才是我们自己的主类(有main方法的类)。如果这些属性缺失,说明打包配置不正确。如果使用导出方式,则Main-Class会直接指向我们的主类,但这样可能无法正确加载BOOT-INF/lib下的依赖。因此,对于SpringBoot项目,强烈建议使用spring-boot-maven-plugin打包。以下是一个完整的pom.xml示例片段:```xml<project>...<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>${spring-boot.version}</version><configuration><mainClass>com.example.YourApplication</mainClass></configuration><executions><execution><goals><goal>repackage</goal></goals></execution></executions></plugin></plugins></build></project>```如果已经配置了插件仍然找不到主类,可以尝试在插件配置中明确指定主类(如上<configuration>部分)。另外,确保主类上使用了@SpringBootApplication注解,并且位于包的根路径下(或配置了@ComponentScan)。如果一切配置正确,使用以下命令运行:```bashjava-jartarget/your-project-name-version.jar```如果问题仍然存在,请检查打包后的jar文件结构:-BOOT-INF/classes下是否有你的class文件-BOOT-INF/lib下是否有所有依赖的jar如果没有,则打包过程可能有问题。最后,如果MyEclipse的内置Maven版本太低,无法下载插件,可以尝试更新MyEclipseMaven插件或使用更高版本的MyEclipse。考虑到MyEclipse2018可能较旧,如果内置Maven无法完成打包,可以尝试在另一台有Maven环境的机器上打包,然后复制过来运行。下面给出一个完整的解决方案步骤(假设使用MyEclipse内置Maven):1.在pom.xml中配置spring-boot-maven-plugin(如上所示),并指定主类。2.右键项目->RunAs->Mavenbuild...3.在Goals中输入:cleanpackage4.等待构建完成,在target目录下找到生成的jar文件(通常名称如:your-project-0.0.1-SNAPSHOT.jar)5.在命令行中运行:java-jaryour-project-0.0.1-SNAPSHOT.jar如果仍然遇到问题,可以尝试在pom.xml中指定打包格式为jar(因为默认也是jar):```xml<packaging>jar</packaging>```如果项目结构是非标准的(比如主类不在src/main/java下),还需要配置资源目录等。以上步骤应该能解决打包和找不到主类的问题。相关问题:</think>## MyEclipse 2018 打包 Spring Boot 解决方案 您在 MyEclipse 2018 中打包 Spring Boot 项目时遇到找不到主类的问题,这通常是由于打包配置不正确或运行方式错误导致的。以下是完整的解决方案: ### 问题分析 1. **缺少 Maven**:命令行没有安装 Maven,但 MyEclipse 内置了 Maven 支持 2. **打包配置错误**:生成的 JAR 文件缺少主类清单信息 3. **依赖问题**:运行时缺少必要的依赖 4. **项目结构问题**:Spring Boot 主类位置不正确 ### 解决方案一:使用 MyEclipse 内置 Maven 打包 #### 1. 配置 Maven 打包 在 MyEclipse 中: ```xml <!-- pom.xml 中添加 Spring Boot 打包插件 --> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>2.1.18.RELEASE</version> <!-- 与您的Spring Boot版本匹配 --> <configuration> <mainClass>com.example.YourApplication</mainClass> <!-- 替换为实际主类 --> </configuration> <executions> <execution> <goals> <goal>repackage</goal> <!-- 生成可执行JAR --> </goals> </execution> </executions> </plugin> </plugins> </build> ``` #### 2. 在 MyEclipse 中执行打包 1. 右键项目 → Run As → Maven build... 2. 在 Goals 中输入:`clean package` 3. 点击 Run #### 3. 验证生成的 JAR 生成的 JAR 位于 `target/` 目录,检查清单文件: ```bash unzip -p your-app.jar META-INF/MANIFEST.MF ``` 输出应包含: ``` Main-Class: org.springframework.boot.loader.JarLauncher Start-Class: com.example.YourApplication ``` ### 解决方案二:使用 Eclipse 导出功能(无需 Maven) #### 1. 创建可执行 JAR 1. 右键项目 → Export → Java → Runnable JAR file 2. 配置: - Launch configuration: 选择包含主类的配置 - Export destination: 指定输出路径 - Library handling: **选择 "Package required libraries into generated JAR"** 3. 点击 Finish #### 2. 添加主类清单(如果自动添加失败) 创建 `MANIFEST.MF` 文件: ``` Manifest-Version: 1.0 Main-Class: org.springframework.boot.loader.JarLauncher Start-Class: com.example.YourApplication ``` 使用 jar 命令更新清单: ```bash jar uvfm your-app.jar MANIFEST.MF ``` ### 解决方案三:手动打包(无需任何工具) #### 1. 编译项目 在项目根目录创建编译脚本 `compile.bat`: ```batch @echo off setlocal set JAVA_HOME="C:\Program Files\Java\jdk1.8.0_291" <!-- 修改为实际路径 --> set SRC_DIR=src/main/java set RES_DIR=src/main/resources set OUTPUT_DIR=target/classes mkdir %OUTPUT_DIR% %JAVA_HOME%\bin\javac -d %OUTPUT_DIR% -cp ".;lib/*" %SRC_DIR%\com\example\*.java xcopy /Y /E %RES_DIR%\* %OUTPUT_DIR%\ ``` #### 2. 打包可执行 JAR 创建 `package.bat`: ```batch @echo off setlocal set OUTPUT_DIR=target/classes set LIB_DIR=lib set JAR_NAME=myapp.jar :: 创建临时目录 mkdir target\temp mkdir target\temp\BOOT-INF mkdir target\temp\BOOT-INF\classes mkdir target\temp\BOOT-INF\lib :: 复制文件 xcopy /Y /E %OUTPUT_DIR%\* target\temp\BOOT-INF\classes\ xcopy /Y /E %LIB_DIR%\* target\temp\BOOT-INF\lib\ :: 创建清单文件 echo Manifest-Version: 1.0 > MANIFEST.MF echo Main-Class: org.springframework.boot.loader.JarLauncher >> MANIFEST.MF echo Start-Class: com.example.YourApplication >> MANIFEST.MF :: 打包JAR %JAVA_HOME%\bin\jar cfm %JAR_NAME% MANIFEST.MF -C target\temp . :: 清理 rmdir /S /Q target\temp del MANIFEST.MF echo JAR created: %JAR_NAME% ``` ### 运行 JAR 的正确方式 ```bash # 正确方式(使用内置的JarLauncher) java -jar your-app.jar # 错误方式(直接指定主类) java -cp your-app.jar com.example.YourApplication # 这将失败 ``` ### 常见问题解决 **问题:仍然找不到主类** 解决: 1. 检查主类是否包含 `@SpringBootApplication` 注解 2. 确认主类在正确的包结构中 3. 使用 Spring Boot 提供的 `JarLauncher` 而非直接调用主类 **问题:缺少依赖** 解决: 1. 使用 `mvn dependency:copy-dependencies` 下载所有依赖 2. 将依赖放入 `lib/` 目录 3. 确保 JAR 包含 `BOOT-INF/lib/` 目录 **问题:版本兼容性** MyEclipse 2018 支持的 Spring Boot 版本: ```xml <!-- 推荐使用兼容版本 --> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.18.RELEASE</version> </parent> ``` ### 最佳实践建议 1. **项目结构规范**: ``` src/ main/ java/ com/example/ YourApplication.java # 主类 resources/ application.properties ``` 2. **主类示例**: ```java package com.example; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class YourApplication { public static void main(String[] args) { SpringApplication.run(YourApplication.class, args); } } ``` 3. **依赖管理**: 将项目所需的 JAR 文件放入 `lib/` 目录,包括: - spring-boot-loader-*.jar (Maven 下载) - 所有 Spring Boot 相关的 JAR
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值