在Maven项目中编译一个.java文件

时间:2019-02-12 21:29:21

标签: java maven

现在,我正在使用mvn package exec:java -DskipTests,它将很好地编译我的项目并启动服务器。

如果.java文件发生更改,而不是重新启动服务器,而是只希望重新编译该单独的.java文件。

是否有人拥有可以在Maven项目中编译单个.java文件并将其放入目标/类的可靠javac命令?

这是项目结构:

src/
  main/
    java/
      foo/
        My.java

,然后需要将其编译到以下位置:

target/
   classes/
      foo/
        My.class

以下bash脚本将在没有导入的情况下编译该文件。

#!/usr/bin/env bash

mkdir -p "$PWD/target/classes/foo";
javac "$PWD/src/main/java/foo/My.java" -d "$PWD/target/classes" -cp "$PWD/src/main/java"

但是如果我在文件中包含导入,那么我需要使用一个包含maven依赖项的类路径。

因此,当我使用-cp设置类路径时,我需要执行以下操作:

-cp "$PWD/src/main/java:$M2_HOME"

有人知道我应该在类路径中添加什么内容,以涵盖Maven项目所需的Maven Dep吗?

更新

我认为这可行的唯一方法是,如果Maven可以将确定的位置将第一个 real 构建中使用的所有依赖项捆绑到一个jar文件中。然后,如果我想编译一个Java文件,则可以在类路径中引用该jar。

否则,看来maven会将100多个路径附加到CLASSPATH,并且必须进行一些仔细的计算才能确定哪个版本的jar包含CLASSPATH。可能无法确定原始版本中包含哪些jar。因此,唯一的了解方法是让Maven在一个jar文件中吐出一个包含所有库dep的新jar。

0 个答案:

没有答案