首页 > 其他分享 >IDEA与Maven在编译、构建、运行中涉及问题整理

IDEA与Maven在编译、构建、运行中涉及问题整理

时间:2023-07-21 09:22:45浏览次数:46  
标签:输出 IDEA Maven 编译 maven 目录

Maven构建后class、jar、war等文件输出目录

Maven默认文件输出目录在根目录的target目录下,但是可以通过配置进行修改。

  1. ${project.build.directory}:/target目录。
  2. ${project.basedir}:pom.xml所在目录。

class文件输出位置修改

通过pom.xml增加如下配置

<build>
    <!-- ... -->
	<outputDirectory>${project.basedir}/src/main/webapp/WEB-INF/classes/</outputDirectory>
    <!-- ... -->
</build>

其他配置项

<build>	
    <!--该元素设置了项目源码目录,当构建项目的时候,构建系统会编译目录里的源码。该路径是相对于pom.xml的相对路径。 -->
    <sourceDirectory />
    <!--该元素设置了项目脚本源码目录,该目录和源码目录不同:绝大多数情况下,该目录下的内容 会被拷贝到输出目录(因为脚本是被解释的,而不是被编译的)。 -->
    <scriptSourceDirectory />
    <!--该元素设置了项目单元测试使用的源码目录,当测试项目的时候,构建系统会编译目录里的源码。该路径是相对于pom.xml的相对路径。 -->
    <testSourceDirectory />
    <!--被编译过的应用程序class文件存放的目录。 -->
    <outputDirectory />
    <!--被编译过的测试class文件存放的目录。 -->
    <testOutputDirectory />
</build>

jar文件输出位置修改

<build>
    <!-- ... -->
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <configuration>
            <!-- 指定打包的jar包输出路径 -->
            <outputDirectory>D:\test</outputDirectory>
            <!--不打入jar包的文件类型或者路径 -->
            <excludes>
                <exclude>**/*.properties</exclude>
                <exclude>**/*.xml</exclude>
                <exclude>**/*.yml</exclude>
                <exclude>static/**</exclude>
                <exclude>templates/**</exclude>
            </excludes>
        </configuration>
    </plugin>
    <!-- ... -->
</build>     

war文件输出位置修改

<build>
    <!-- ... -->
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-war-plugin</artifactId>
        <configuration>
            <!-- 指定打包的jar包输出路径 -->
            <outputDirectory>D:\test</outputDirectory>
            <!--不打入jar包的文件类型或者路径 -->
            <excludes>
                <exclude>**/*.properties</exclude>
                <exclude>**/*.xml</exclude>
                <exclude>**/*.yml</exclude>
                <exclude>static/**</exclude>
                <exclude>templates/**</exclude>
            </excludes>
        </configuration>
    </plugin>
    <!-- ... -->
</build>     

IDEA项目配置编译输出目录

Proeject Structure -> Modules -> Paths -> Output path

image

Artifacts 项目打包方式

image

这一步实际是将maven与项目便也好的代码,按照实际部署情况进行打包。

IDEA 内tomcat配置后,实际运行项目地址

image

image

特殊说明

  1. 热部署仍需要安装Jrebel插件。
  2. 项目或maven指定编译后代码输出目录后,当项目未运行时,因IDEA内tomcat默认指向/target目录下项目,导致代码不生效,需要rebuild artifacts。
  3. 项目或maven指定编译后代码输出目录后,当项目运行时,因Jrebel热部署生效,应该是实时改变了JVM内运行的代码,所以代码可以生效。
  4. Run/Debug Configurations内,最好开启Build ProjectBuild Artifact配置(稳定,但是速度慢)。

遗留问题

  1. Jrebel热部署原理仍需要探索。
  2. 项目未运行时,编译后少量代码时,有没有不使用rebuild artifacts方式(耗时太久)。

巨人的肩膀

Maven POM

Maven打包到指定位置

Maven War 插件详解

标签:输出,IDEA,Maven,编译,maven,目录
From: https://www.cnblogs.com/hr0552/p/17570357.html

相关文章

  • idea 在springboot添加本地jar包的方法
    虽然现在Maven很方便,但还是会有一些jar是不开源的,也就是说在Maven仓库中是下载不到的,比如对接阿里云、通联等,这个时候就需要我们手动将这些jar包下载下来,然后手动添加到我们的项目中1、先下载好自己需要的jar包,如下: 2、在SpringBoot中的resources目录新建一个lib目录,将这些ja......
  • window 编译 redis
    在Windows上编译RedisRedis是一个开源的内存数据库,广泛应用于缓存、消息队列等场景。在Windows上编译Redis可以帮助开发者进行本地调试和开发工作。本文将介绍如何在Windows环境下编译Redis,并提供相应的代码示例。准备工作在开始编译Redis之前,我们需要准备一些必要......
  • Maven 常用命令
    参考https://www.digitalocean.com/community/tutorials/maven-commands-options-cheat-sheet......
  • Heka 的编译
    Heka是Mozilla开源的,基于Go语言实现的,插件式log收集和分析系统。已经编译好的release版本可以在下面地址下载:https://github.com/mozilla-services/heka/releases  如果我们想自行编译,以windows下为例,如下: 下载源码:C:\>gogetgithub.com/mozilla-services/hekapackagegi......
  • bat脚本将Idea加入到右键菜单
    另存以下代码到idea.reg文件,双击运行即可WindowsRegistryEditorVersion5.00[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\background\shell\idea]@="使用IDEA打开文件夹""Icon"="D:\\ProgramFiles\\JetBrains\\IntelliJIDEA2022.3.2\\bin\......
  • cmake交叉编译
    最近要把程序移植到armv7环境中,需要将程序和依赖库全部移植,因硬件资源有限,选择的是交叉编译的路线。新建ubuntu20.04的虚拟机,然后安装开发环境、交叉编译环境等工具。安装c++编译工具sudoaptinstallbuild-essential安装工具:sudoaptinstallmakesudoaptinstallunzipsud......
  • idea给java程序创建test目录
    在Java程序中创建test目录的方法在Java开发中,我们经常需要编写测试代码来验证我们的程序的正确性。为了更好地组织测试代码,我们可以创建一个独立的test目录来存放所有的测试代码。为什么要创建test目录?创建test目录有以下几个好处:更好的组织结构:将测试代码与正式代码分离,使项......
  • idea调试go语言
    使用IDE调试Go语言介绍在开发过程中,调试是一个非常重要的环节。调试可以帮助我们快速定位和解决问题,提高代码的质量和效率。本文将介绍如何使用IDE来调试Go语言程序,以帮助开发者更加高效地进行调试工作。Go调试工具在开始之前,我们需要了解一些与Go调试相关的工具。DelveDelve......
  • idea创建spring boot项目没有Spring Initializr
    使用Idea创建SpringBoot项目没有SpringInitializr的方法在使用Idea开发Java项目时,通常可以通过SpringInitializr来快速创建SpringBoot项目。但是,有些情况下我们可能无法使用SpringInitializr来创建项目,比如网络环境受限,无法访问SpringInitializr的在线服务。那么有没有其他......
  • idea中java jxl程序包导入
    导入JavaJXL程序包的步骤为了在IDEA中导入JavaJXL程序包,你可以按照以下步骤进行操作。这些步骤将指导你如何在你的项目中添加所需的依赖,并确保你可以成功使用JavaJXL库进行开发。步骤概览下表列出了完成整个过程所需的步骤:步骤描述1创建一个新的Java项目2打开......