본문 바로가기
프로그램 개발(분석, 설계, 코딩, 배포)/2. 개발

emacs에서 eGovFrame 사용

by 3604 2026. 6. 19.
728x90

윈도우 wsl2 우분투에 emacs 설치했어. 환경을 기준으로 다시 알려줘

윈도우 WSL2 우분투(Ubuntu) 환경에 Emacs 이미 준비되어 있다면, 이제 리눅스 시스템(Ubuntu) 내부에서 Java, Maven, eGovFrame 동작시킬 차례입니다. [1]

중학생도 터미널 명령어 번만 복사·붙여넣기 하면 완벽하게 구성할 있도록 단계별로 안내해 드릴게요. 모든 작업은 우분투 터미널 안에서 진행됩니다. [1]


1단계: 필수 개발 도구 한방에 설치하기 (Java & Maven) [1]

우분투는 윈도우처럼 사이트에서 파일을 직접 다운로드해 압축을 필요가 없습니다. 명령어 줄이면 컴퓨터가 알아서 최신 정식 버전을 구해서 설치해 줍니다. [1]

  1. 우분투 터미널 엽니다.
  2. 현재 설치할 있는 프로그램 목록을 최신으로 업데이트합니다.

bash

sudo apt update

코드를 사용할 때는 주의가 필요합니다.

  1. eGovFrame 4.x 버전에 가장 안정적인 Java 17 빌드 도구인 Maven 번에 설치합니다. (비밀번호를 물어보면 윈도우에서 WSL2 설치할 만든 우분투 비밀번호를 입력하세요.)

bash

sudo apt install -y openjdk-17-jdk maven

코드를 사용할 때는 주의가 필요합니다.

[1]


2단계: 리눅스 환경 변수(Path) 등록하기 [1]

리눅스(우분투)에서 환경 변수를 잡는 것은 ~/.bashrc라는 설정 파일에 글을 적어두는 방식으로 진행됩니다. [1]

  1. 터미널에 아래 명령어를 그대로 복사해서 엔터를 누릅니다. (자바 주소를 등록하는 명령어입니다.)

bash

echo 'export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64' >> ~/.bashrc

코드를 사용할 때는 주의가 필요합니다.

[1]

  1. 방금 수정한 내용을 우분투 시스템에 즉시 적용합니다.

bash

source ~/.bashrc

코드를 사용할 때는 주의가 필요합니다.

 

  1. 되었는지 검사하기: 터미널에 아래 명령어들을 각각 입력해 봅니다.

bash

java -version

mvn -version

코드를 사용할 때는 주의가 필요합니다.


3단계: Emacs Java 언어 서버 연동 설정 (init.el)

우분투 환경의 Emacs Java 코드를 인식하고 eGovFrame 라이브러리를 읽어올 있도록 설정 파일을 수정해야 합니다.

  1. 우분투 터미널에서 Emacs 설정 파일을 엽니다. (텍스트 모드로 열기)

bash

emacs ~/.emacs.d/init.el

코드를 사용할 때는 주의가 필요합니다.

  1. 지난번에 작성했던 lsp-java 설정 부분 자바 실행 파일 경로 아래와 같이 리눅스 경로로 정확하게 고쳐줍니다.

elisp

(use-package lsp-java

  :ensure t

  :config

  ;; 우분투에 설치된 Java 실제 경로 지정

  (setq lsp-java-java-path "/usr/lib/jvm/java-17-openjdk-amd64/bin/java"))

 

[참고] 안될 경우

(require 'package)

;; 1. 패키지 저장소 목록에 MELPA(인터넷 시장) 주소 추가하기

(add-to-list 'package-archives '("melpa" . "https://melpa.org") t)

;; 2. 패키지 시스템 시작하기

(package-initialize)

;; 3. use-package 설치되어 있지 않다면 자동으로 설치하기

(unless (package-installed-p 'use-package) (package-refresh-contents) (package-install 'use-package)) (eval-when-compile (require 'use-package))

 

 

코드를 사용할 때는 주의가 필요합니다.

 

 

 

  1. 파일을 저장(C-x C-s)하고 Emacs 종료(C-x C-c)합니다.

4단계: eGovFrame 프로젝트 생성 (Maven 아키타입)

이제 터미널에서 eGovFrame 제공하는 공식 템플릿(심플 홈페이지) 마법사를 실행하여 프로젝트 폴더를 생성합니다.

  1. 코딩할 프로젝트들을 모아둘 (폴더) 만들고 이동합니다.

bash

mkdir -p ~/workspace && cd ~/workspace

코드를 사용할 때는 주의가 필요합니다.

[1]

  1. 아래의 명령어를 통째로 복사해서 터미널에 붙여넣고 엔터를 누릅니다.

Bash

 

[방법 1] 검증된 4.0 아키타입 버전 사용 시

mvn archetype:generate \

  -DarchetypeGroupId=egovframework.rte \

  -DarchetypeArtifactId=egovframework.rte.sp.archetype.simplehomepage \

  -DarchetypeVersion=4.3.0 \

  -DgroupId=com.school \

  -DartifactId=my-egov-app \

  -Dversion=1.0.0 \

  -DinteractiveMode=false

 

[방법2] 4.3.0 템플릿 사용 시

전자정부프레임워크 4.x 버전부터 메이븐 아키타입(Archetype)의 고유 이름(Artifact ID)이 변경되었거나, 해당 버전의 아키타입이 원격 저장소에 수동 생성 명령어로 제공되지 않기 때문

 

root@DESKTOP-GK0BRBG:/mnt/c# mv eGovFrameDev-5.0.1-Linux-64bit.tar.gz /home/linux/workspace/

 

 

[참고] 오류 해결1

"[ERROR] Failed to execute goal org.apache.maven.plugins:maven-archetype-plugin:3.4.1:generate (default-cli) on project standalone-pom: The desired archetype does not exist (egovframework.rte:egovframework.rte.sp.archetype.simplehomepage:4.3.0) -> [Help 1]" 해결 방법은?

에러는 메이븐(Maven) 인터넷에서 전자정부프레임워크의 프로젝트 (Archetype) 찾으려고 했으나, 전자정부프레임워크의 공식 원격 서버 주소가 등록되어 있지 않아 다운로드에 실패했을 발생하는 전형적인 문제입니다. [1]

기본 메이븐은 아파치(Apache) 중앙 서버만 보기 때문에, 한국의 전자정부프레임워크 전용 서버(Repository) 주소 명시해 주어야 해결됩니다. [1, 2]

WSL2 우분투 환경에서 명령어 줄로 즉시 해결하는 방법을 알려드릴게요.


가장 확실한 해결 방법: 명령어에 '전자정부 서버 주소' 추가하기

기존 명령어 뒤에 전자정부프레임워크 원격 저장소 주소인 -DarchetypeRepository=https://maven.egovframe.go.kr/maven/ 추가해서 다시 실행하면 됩니다. [1]

우분투 터미널(~/workspace 경로)에서 아래의 수정된 전체 명령어를 통째로 복사해서 붙여넣고 엔터를 누르세요.

bash

mvn archetype:generate \

  -DarchetypeGroupId=egovframework.rte \

  -DarchetypeArtifactId=egovframework.rte.sp.archetype.simplehomepage \

  -DarchetypeVersion=4.3.0 \

  -DgroupId=com.school \

  -DartifactId=my-egov-app \

  -Dversion=1.0.0 \

  -DinteractiveMode=false \

  -DarchetypeRepository=https://maven.egovframe.go.kr/maven/

코드를 사용할 때는 주의가 필요합니다.


💡 에러가 났을까요? (원인 이해하기)

메이븐은 일종의 '도서관 대출 시스템'입니다. 기본 설정 상태에서는 글로벌 도서관(Maven Central) 뒤지게 됩니다. 하지만 우리가 요청한 egovframework.rte...라는 (Archetype) 국립 전자정부 도서관에만 보관되어 있기 때문에, 명령어를 내릴 "국립 전자정부 도서관 주소(https://maven.egovframe.go.kr/maven/)에서 찾아라" 하고 명시해 주어야 컴퓨터가 똑바로 찾아낼 있습니다. [1, 2, 3]

주소를 추가하면 메이븐이 서버에 접속하여 4.3.0 버전의 템플릿 파일을 정상적으로 받아오며 BUILD SUCCESS 문구와 함께 프로젝트 생성을 완료할 것입니다

 

[참고] 오류 해결

 

"[ERROR] Failed to execute goal org.apache.maven.plugins:maven-archetype-plugin:3.4.1:generate (default-cli) on project standalone-pom: The desired archetype does not exist (egovframework.rte:egovframework.rte.sp.archetype.simplehomepage:4.3.0) -> [Help 1]" 해결 방법은?

에러가 발생한 진짜 원인은 전자정부프레임워크 4.x 버전부터 메이븐 아키타입(Archetype) 고유 이름(Artifact ID) 변경되었거나, 해당 버전의 아키타입이 원격 저장소에 수동 생성 명령어로 제공되지 않기 때문입니다. [1]

전자정부프레임워크 4.0 이상부터는 프로젝트 구조가 Spring Boot 기반으로 전면 개편되면서 과거 3.x 방식의 아키타입 자동 생성 명령어가 먹히지 않는 경우가 많습니다. 중학생도 터미널에서 에러 없이 4.3 프로젝트를 바로 띄울 있는 가장 확실한 대안 해결법 2가지 알려드릴게요. [1, 2]


방법 : 검증된 4.0 아키타입 버전으로 낮춰 생성하기 (추천)

서버에 등록된 원격 아키타입 가장 안정적으로 작동하는 4.0.0 버전을 호출하여 프로젝트 틀을 만든 , 나중에 버전만 4.3.0으로 올리는 방법입니다. [1]

우분투 터미널(~/workspace)에서 아래 명령어를 복사해서 실행해 보세요.

bash

mvn archetype:generate \

  -DarchetypeGroupId=egovframework.rte \

  -DarchetypeArtifactId=egovframework.rte.sp.archetype.simplehomepage \

  -DarchetypeVersion=4.0.0 \

  -DgroupId=com.school \

  -DartifactId=my-egov-app \

  -Dversion=1.0.0 \

  -DinteractiveMode=false \

  -DarchetypeRepository=https://egovframe.go.kr

코드를 사용할 때는 주의가 필요합니다.


방법 : GitHub에서 4.3.0 템플릿 직접 다운로드하기 (가장 확실!)

전자정부프레임워크 센터에서는 최신 템플릿 프로젝트를 아키타입 대신 GitHub 저장소에 통째로 올려두고 다운로드받는 방식을 권장하고 있습니다. 메이븐 명령어가 계속 에러를 뿜는다면 방법이 100% 성공합니다. [1]

우분투 터미널을 열고 다음 명령어들을 순서대로 입력하세요.

  1. 프로젝트 보관함으로 이동:

bash

cd ~/workspace

코드를 사용할 때는 주의가 필요합니다.

  1. 공식 심플 홈페이지 템플릿 다운로드(Git 복제):

bash

git clone https://github.com my-egov-app

# eGovFrameDev-5.0.1-Linux-64bit 다운받아 설치하기

#sudo tar -xvf eGovFrameDev-5.0.1-Linux-64bit.tar.gz -C /opt

# root@DESKTOP-GK0BRBG:/home/linux/egovframedev5#

코드를 사용할 때는 주의가 필요합니다.

  1. 만들어진 폴더로 이동:

bash

cd my-egov-app

코드를 사용할 때는 주의가 필요합니다.

  1. Emacs 열어서 개발 시작:

bash

emacs pom.xml

코드를 사용할 때는 주의가 필요합니다.


💡 요약하자면!

  • 원인: 전자정부프레임워크의 simplehomepage 4.3.0 아키타입 파일이 메이븐 중앙 저장소 서버에 존재하지 않아서 생긴 에러입니다.
  • 해결: 4.0.0 버전을 지정해 명령어를 실행하거나(방법 ), GitHub 공식 소스 코드 직접 컴퓨터로 가져오면(방법 ) 완벽하게 해결됩니다

 

 


 

코드를 사용할 때는 주의가 필요합니다.


5단계: Emacs에서 코딩하고 실행해보기 [1]

  1. 폴더 안으로 들어갑니다.

bash

cd my-egov-app

코드를 사용할 때는 주의가 필요합니다.

  1. Emacs 프로젝트 핵심 파일인 pom.xml 엽니다.

bash

emacs pom.xml

코드를 사용할 때는 주의가 필요합니다.

  1. 파일을 열면 Emacs 내부의 lsp-mode 백그라운드에서 실행되면서 전자정부프레임워크 코드를 분석하기 시작합니다. (처음에는 필요한 파일을 읽어오느라 아주 조금 시간이 걸릴 있어요.)
  2. 프로젝트 실행하기: Emacs 안에서 M-x compile 입력한 아래 명령어를 치거나, 우분투 터미널 창에서 바로 실행하면 스프링 부트 기반의 내장 톰캣 서버가 구동됩니다.

bash

mvn spring-boot:run

코드를 사용할 때는 주의가 필요합니다.

  1. 서버가 켜지면 윈도우 크롬 브라우저를 열고 주소창에 http://localhost:8080 입력해 보세요. WSL2 덕분에 윈도우 화면에서도 우분투에서 돌아가는 전자정부프레임워크 홈페이지를 바로 확인할 있습니다! [1]

 

[참고] Linux용 전자정부 표준프레임워크 v4.1.0 설치하기

출처: https://offbyone.tistory.com/480 [쉬고 싶은 개발자:티스토리]

 

개발환경을 리눅스로 옮겨서 개발 도구들을 모두 다시 설치하고 있습니다. 이번에는 전자정부 표준프레임워크를 Linux에 설치합니다. 사용하고 있는 리눅스 종류는 Fedora 38 Workstation 입니다.

1. 개발환경 다운로드

표준프레임워크 포털에 들어가서 리눅스용 개발환경을 다운로드 합니다. 리눅스에 설치한 크롬으로 접속하여 다운로드 받았습니다. URL을 안다면 wget으로 다운받아도 되겠습니다. 다운로드 받은 파일명은 eGovFrameDev-4.1.0-Linux-64bit.tar.xz 입니다. 사이트에 적혀있는 파일 사이즈는  1,639,310,324 Byte 인데 실제는 1,653,023,848 Byte 였습니다. 왜 다른 걸까요? 그리고 개발환경 설명에는 .gz 로 나와 있는데, 다운받은 파일은 .xz이네요. xz zip 보다 압축률이 좋다고 하던데, 그래서 xz가 사용된것 같습니다. 설명도 통일되었으면 좋았겠습니다.

전자정부 표준프레임워크 v4.1.0 JDK 17을 필수로 사용한다고 되어 있습니다. Fedora 설치시 OpenJDK17이 기본설치되어 있었지만 이것을 사용하지 않고 표준프레임워크에 미리 포함되어 있는 JDK를 사용하였습니다.

 

2. 압축풀기

전자정부 표준프레임워크는 원하는 폴더에 압축을 풀면 설치가 된것입니다. 설치 위치는 /opt 폴더에 했습니다. xz로 푼 다음에 tar로 풀어도 되지만, tar만으로도 압축이 풀립니다.

 

$ sudo tar -xvf eGovFrameDev-5.0.1-Linux-64bit.tar.gz -C /opt

 

 설치 위치는 /opt/eGovFrameDev-5.0.1-Linux-64bit입니다. 하위에 eclipse폴더와 workspace폴더가 있습니다.

 

 

3. 실행파일 심볼릭 링크 만들기

사용 편의를 위해 실행파일을 /usr/bin에 심볼릭 링크를 만듭니다

 

$ sudo ln -sf /opt/eGovFrameDev-4.1.0-Linux-64bit/eclipse/eclipse /usr/bin/eclipse

 

 #sudo ln -sf /home/linux/egovframedev5/eclipse/eclipse /usr/bin/eclipse

 

 

4. 실행시 에러 발생

 

설치가 되었으므로 실행을 해보니 설치된 폴더내에서 실행을하면 잘 되는데, 다른 위치에서 실행을 하면 다음의 에러가 발생하였습니다.

 

 

$ eclipse

Error opening zip file or JAR manifest missing : plugins/org.projectlombok.agent_1.18.26/lombok.jar

Error occurred during initialization of VM

agent library failed to init: instrument

 

 

 

plugins 폴더내에 lombok.jar 파일을 찾지 못하고 있습니다. lombok 관련 설정이 eclipse.ini 파일의 -javaagent 항목에 있습니다. javaagent JVM 내에서 특정 작업을 수행하는 프로그램입니다. JVM의 이벤트를 받거나 실행되는 바이트 코드를 제어하는 등의 작업을 할 수 있습니다. Lombok는 바이트 코드를 제어하여 getter setter를 자동으로 만들어 주는 역할을 합니다.

 

 

 

eclipse.ini파일내의 -javaagent 항목의 lombok.jar 파일의 위치를 전체 경로로 수정하면 정상적으로 실행됩니다.

 

 

 

# 원래 내용

-javaagent:plugins/org.projectlombok.agent_1.18.26/lombok.jar

 

# 전체 경로로 수정된 내용

-javaagent:/opt/eGovFrameDev-4.1.0-Linux-64bit/eclipse/plugins/org.projectlombok.agent_1.18.26/lombok.jar

 

 

 

5. 그놈에 아이콘 등록하기

 

명령행에서 실행할 수도 있지만, GUI 환경이므로 아이콘을 등록해서 사용하는게 편리하겠습니다. /usr/share/applications 폴더에 egovframedev.desktop 파일을 만듭니다.

 

 

 

$ sudo vi /usr/share/applications/egovframedev.desktop

 

 

 

파일 내용입니다.

 

 

[Desktop Entry]

Encoding=UTF-8

Name=eGovFrameDev

Comment=전자정부 표준프레임워크

Exec=/usr/bin/eclipse

Icon=/opt/eGovFrameDev-4.1.0-Linux-64bit/eclipse/icon.xpm

Categories=Application;Development;Java;IDE

Type=Application

Terminal=0

 

 

 

전자정부 표준프레임워크 개발환경을 설치해 보았습니다. 중간에 에러가 한번 발생한것 빼고는 무난하게 설치가 된 것 같습니다. 개개인의 환경이 모두 다르기 때문인지 개발 관련해서는 뭘하던 한번에 되는 경우는 거의 없는것 같습니다.T.T

출처: https://offbyone.tistory.com/480 [쉬고 싶은 개발자:티스토리]

 

728x90