Как определить имя главного класса из java-файла с несколькими классами с помощью сценария оболочки?

Я делаю скрипт javaFilesConcatenator, используя cat и sed, который объединяет несколько .java файлов:

#!/bin/bash
########################################################################################################################
# This file create a "MainFileName.java.output" file concatenating all java file in this directory.
# Run this script as '$ ./javaFilesConcatenator MainFileName' when "MainFileName.java" contains the main method.
########################################################################################################################

cat *.java | sed -e 's/public class/class/g;s/public interface/interface/g' >$1.java.output
sed -i "s/class $1/public class $1/g" $1.java.output

Для запуска этого скрипта я беру имя главного класса в качестве входного аргумента от пользователя, потому что главный класс должен быть public, а другие нет. Я заменяю все public class ClassName на class ClassName, кроме главного класса.

Теперь я хочу изменить свой скрипт так, чтобы он был более дружественным к пользователю, чтобы он определял главный класс без указания имени главного класса. Я думаю, это будет возможно, потому что главный класс отличается от других. Он содержит метод main.

И еще одно требование - поместить все import (например, import java.util.Scanner;) в начало документа, вырезая из разных позиций (каждый файл имеет несколько import в начале, после конкатенации они не все в начале) выходного файла.

Еще одно необязательное требование - удаление всех package com.alhelal.texpad; подобных строк, но не комментариев со словом package.

Как я могу выполнить свои требования?

0
26.10.2017, 08:32
0 ответов

Теги

Похожие вопросы