; import java.nio.file.Files; import java.nio.file.Path; import java.util.*; import java.util.concurrent.ConcurrentSkipListSet...; import java.util.stream.Collectors; /** * 删除未使用的类 * 仅依赖 JDK */ public class DeleteNotUsage...static final File ROOT; static { if (CLASS_PATH.endsWith("test-classes")) { // maven...ROOT= new File(CLASS_PATH) // target/test-classes .getParentFile() /...("target|.git"); /** * 添加自行定义的会被调用到的注解或关键字 */ private static final Pattern USED_PATTERN
进一步说,每个任务对应了一个插件目标(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 以查看运行效果。
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
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
* 一行命令 # 切换到项目根目录 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的一部分。
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
使用 java 手动执行生成的类文件# 下面以执行使用 mvn compile 编译好的 cn.gson.oasys.OasysApplication Java 类为例。...你可以使用 java 命令直接运行编译后的 Java 类文件,但是你需要明确指定所需要的类路径 -cp 或者 -classpath,包括你的项目的所有依赖库。...然后,使用 java 命令执行 main 方法,你需要将项目的 target/classes 目录和所有的依赖库一起加入到类路径 -cp 中。...:target/dependency/* 指定了类路径,包含了你的项目编译后的类文件和所有的依赖库。...因此,一般推荐直接使用 Maven 来运行你的 Spring Boot 应用。 注:本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。
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
>:指定要执行的命令为java,表示使用Java来执行命令。...而很多反编译器不展示合成方法,导致的结果就是反编译后看不到任何 private 方法图片三、maven 插件原理1....每个 MOJO 都是一个 Java 类,实现了特定的构建逻辑,并且可以通过 Maven 的命令行或配置文件(如 pom.xml)来调用。...MOJO 的主要特点Java 类:MOJO 是一个普通的 Java 类,通常继承自 org.apache.maven.plugin.AbstractMojo 类。...注解:MOJO 类和方法通常使用注解来提供元数据,例如 @Mojo 注解用于标记一个类为 MOJO,@Parameter 注解用于标记类的属性为插件配置参数。
常用手法三连:1.项目未正确编译 原因:项目可能未正确编译,导致 XkOrderApplication 类文件未生成。...2.依赖冲突或缺失 原因:某些依赖可能未正确加载,导致主类无法加载。...3.清理缓存并重启 原因:IDEA 的缓存可能损坏,导致配置错误,导致类路径或编译信息未正确更新。...它对应 javac 的 -target 参数,确保生成的字节码兼容指定版本的 JVM。...例如:即使使用 JDK 17 编译,若目标字节码设为 8,生成的 .class 文件可在 JRE 8+ 上运行(但代码不能使用 JDK 9+ 的新语法)。
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文件夹。 接下来,运行应用: ? 运行起来以后: ?
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 以查看运行效果。
Maven 将会开始构建该项目。...你可以在 NetBeans 的终端里查看输出的日志信息: NetBeans: Executing 'mvn.bat -Dnetbeans.execution=true clean install' NetBeans...: JAVA_HOME=C:\Program Files\Java\jdk1.6.0_21 Scanning for projects... -------------------------...\jdk1.6.0_21\bin\java.exe -Dnetbeans.execution=true process-classes org.codehaus.mojo:exec-maven-plugin...----------------- Building consumerBanking task-segment: [process-classes, org.codehaus.mojo:exec-maven-plugin
marshalsec是一款java反序列利用工具,其可以很方便的起一个ldap或rmi服务,通过这些服务来去访问攻击者准备好的恶意执行类来达到远程命令执行或入侵的目的。...marshalsec获取方式在GitHub上,地址为: https://github.com/mbechler/marshalsec marshalsec项目是未编译的,所以想使用他需要通过maven...先编译,同时还需具备JAVA环境。...,会在当前目录下生成一个target的文件夹,代表安装完成就可以使用了………… marshalsec使用说明 marshalsec基本命令格式 java -cp target/marshalsec...mode, 展示生成的payloads + gadget_type:指定使用的payload + arguments - payload运行时使用的参数 + marshalsec.
生成的新名称越短,字节代码越小。在名称混淆的字节代码中,包,类,字段和方法名称已重命名,并且永远不能恢复原始名称。不幸的是,控制流程仍然清晰可见。...通常情况下,选择和循环等逻辑构造会被更改,因此它们不再具有直接等效的Java源代码。流模糊的字节码通常强制反编译器将一系列标签和非法的goto语句插入到它们生成的源代码中。...因此,对于对安全性要求很高的场合,仅仅使用代码混淆并不能保证源代码的安全。 常用的混淆工具 1、yGuard yGuard是一款免费的Java混淆器(非开源),它有Java和.NET两个版本。...官网地址:https://www.yworks.com/products/yguard 2、proguard proguard是一个免费的 Java类文件的压缩,优化,混肴器。...如何制作一个maven插件,可以参考我之前的文章 聊聊如何自定义实现maven插件 其实在springboot项目使用allatori,还遇到一点小坑。这个小坑是啥,留个悬念。下篇文章水一篇。
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下 ?
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 编译测试的内容
-- Java编译器源版本 --> target>1.8target> 的组ID,通常是Maven插件的提供者 --> exec-maven-plugin 的Java主类 --> 的范围指定了依赖在项目的不同构建阶段的可见性和使用情况。常见的范围包括: compile(默认):依赖在所有构建阶段都可见,包括编译、测试和运行。...当您在项目中使用 元素时,它表示您的项目确实依赖于这些库或组件,而这些依赖将被包括在项目的类路径中。
img 我们发现Hello项目里里多了一个target文件夹。文件夹的内容为: ?...img 发现target里主要存放的就是编译后的字节码文件 2、运行mvn test-compile,target文件夹下面除了classes之外多了test-classes文件夹 3、运行mvn package...,target文件夹下面又多了一个打好的jar包 ?...img 4、运行mvn clean,发现整个target文件夹都没了。又回到了编译之前我们手动创建的文件夹 ?...工程指定的target目录里war包和文件都按照配置的生成了 ?
上一篇给大家介绍了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