如何制作支持包的 java 编译器?

How to make a package-supporting java compiler?

有没有什么方法可以在 Batch 中创建一个 java compiler/program 运行ner,它可以自动编译 Java 作为包一部分的源文件?为此,我到处都是堆栈溢出,但一无所获。我目前正在使用记事本++。请注意,我这样做只是为了更好地了解 java 构建过程。

现在,我已经完成了这个基本的 compiler/runner 设置:

javac -d ..\..\bin $(FILE_NAME)
java -classpath ..\..\bin $(NAME_PART)

请注意,我使用的是 Notepad++ 特定的变量,例如 $(FILE_NAME)$(NAME_PART)。你得到了基本的想法。我确实知道如何从命令行 运行 打包 类 (java 。),但我不知道如何自动化它。我希望它输出这个结果:

javac javac -d ..\..\bin $(FILE_NAME)
java -classpath ..\..\bin [packagenamevariable].$(NAME_PART)

感谢您考虑这个问题!

I have been all over stack overflow for this, and have found absolutely nothing.

那是因为仅使用 BAT 脚本编写通用 Java compile/run 框架真的很难。

而且没有必要。

I am currently using Notepad++, and do NOT wish to change to IDE currently.

没关系。您不必使用 IDE。

相反,您可以安装支持 Java 的构建工具,例如 Ant、Maven 或 Gradle。

(对于库依赖性最小的小项目,Ant 会很好地工作。对于较大的项目,Maven 或 Gradle 会更好。)

因为我觉得比ant

简单多了

一个非常简单的 gradle 设置如下:

.
├── build.gradle
└── src
    └── main
        └── java
            └── com
                └── foo
                    └── bar
                        └── Main.java

其中 build.gradle 包含

apply plugin: 'java'
apply plugin: 'application'

mainClassName = "com.foo.bar.Main"

Main.java

package com.foo.bar;

public class Main {
    public static void main(String[] args) {
        System.out.println("Hello world");
    }
}

安装 gradle 后,您只需调用 gradle run 即可发生以下情况:

$ gradle run
:compileJava UP-TO-DATE
:processResources UP-TO-DATE
:classes UP-TO-DATE
:run
Hello world

BUILD SUCCESSFUL

Total time: 0.836 secs

除了run还有其他任务。参见 https://docs.gradle.org/current/userguide/application_plugin.html

一个有用的任务是 installDist,它创建一个 .bat 文件来启动 ./build/install/{projectname}/bin/{projectname}.bat 中的代码。这样你就可以在没有所有 gradle 噪音的情况下启动代码。

也可以使用 gradle 而无需通过 gradle 包装器将其安装在您的系统上:https://docs.gradle.org/current/userguide/gradle_wrapper.html

  • 将上面命令中的gradle替换为gradlew.bat
  • 获取所需文件(gradlew.bat/gradle/wrapper 中的文件)的最简单解决方案是从某个拥有它们的项目中窃取它们。从 github 中随机选取:https://github.com/quinnliu/sampleGradleProject