명령 줄에서 Eclipse Java 프로젝트 빌드


118

명령 줄에서 Eclipse 기반 Java 프로젝트를 컴파일하는 방법이 있습니까?

나는 내 빌드를 자동화하려고 노력하고 있으며 (개미가 아닌 FinalBuilder 사용) Java도 Eclipse 전문가도 아닙니다. 자바 명령 줄 옵션으로이 작업을 수행하는 방법을 알아낼 수 있지만 Eclipse 프로젝트는 많은 노력을 낭비하는 것처럼 느껴집니다.

명령 줄을 통해 Eclipse 프로젝트를 컴파일 할 방법이없는 경우 Eclipse 내에서 필요한 Java 명령 줄을 생성하는 방법이 있습니까? 아니면 백그라운드에서 수행하는 컴파일 단계를 찾기 위해 훑어 볼 수있는 파일이 있습니까?


여러분, 개미 가 포함 되지 않은 답변을 찾고 있습니다. 원래 질문을 다시 반복하겠습니다 ....... 명령 줄에서 Eclipse 프로젝트를 빌드하는 방법이 있습니까?

나는 이것이 비주얼 스튜디오에서 다음과 같은 것을 할 수 있다는 점을 감안할 때 비합리적인 질문이라고 생각하지 않습니다.

devenv.exe /build "Debug|Any CPU" "C:\Projects\MyProject\source\MyProject.sln"

3
이것에 대한 플러그인 / jar가 어떻게 없습니까!
Kieveli

1
좋아 ... 새로운 정답을 추가했습니다.
Kieveli

답변:


61

명령 줄에서 작업 공간을 통해 Eclipse 프로젝트를 빌드 할 수 있습니다.

eclipsec.exe -noSplash -data "D:\Source\MyProject\workspace" -application org.eclipse.jdt.apt.core.aptBuild

그것은 사용하여 jdt apt자동으로 작업 공간을 구축하는 플러그인. 이를 'Headless Build'라고도합니다. 알아 내기 어렵다. win32 exe를 사용하지 않는 경우 다음을 시도 할 수 있습니다.

java -cp startup.jar -noSplash -data "D:\Source\MyProject\workspace" -application org.eclipse.jdt.apt.core.aptBuild

최신 정보

몇 년 전 eclipse startup.jar는 "equinox launcher" 로 대체 되었습니다.

https://wiki.eclipse.org/Equinox_Launcher

Eclipse Mars (MacOX) :

java -jar /Applications/Eclipse.app/Contents/Eclipse/plugins/org.eclipse.equinox.launcher_1.3.100.v20150511-1540.jar -noSplash -data "workspace" -application org.eclipse.jdt.apt.core.aptBuild

-data매개 변수는 작업 공간의 위치를 지정합니다.

equinox 런처의 버전 번호는 사용중인 Eclipse 버전에 따라 다릅니다.


4
이 프로젝트에서 오래 전부터이 답변이 실제로 작동하는지 확인할 수 없지만 수락 된 답변을이 답변으로 변경하고 있습니다. Eclipse에 실제로 명령 줄 스위치가 있음을 나타 내기 때문입니다.
Keith G

3
한 가지 생각 만해도 기존 작업 공간에서만 작동하는 것 같습니다. 예를 들어 소스 제어에서 프로젝트를 체크 아웃하고 이런 방식으로 빌드하는 것이 어렵습니다.
John

내 작업 공간이 svn 저장소에 커밋되었다고 생각합니다. 상대 경로가 있거나 디렉토리 구조가 일치했습니다.
Kieveli 2011 년

2
빌드 결과는 어떻게 봅니까? 나는 이것을 시도했고, "Building workspace"라는 출력을 얻었지만, 빌드가 성공했는지 실패했는지에 대한 표시를 얻지 못했습니다.
Dikla

명령 줄 ant 스크립트를 통해 작업 공간을 구축 할 수도 있습니다. help.eclipse.org/indigo/…
reprogrammer

22

André의 답변을 완성하기 위해 ant 솔루션은 다음과 같이 Emacs, JDEE, Ant 및 Eclipse Java Compiler에 설명 된 것과 유사 할 수 있습니다 .

      <javac
          srcdir="${src}"
          destdir="${build.dir}/classes"> 
        <compilerarg 
           compiler="org.eclipse.jdt.core.JDTCompilerAdapter" 
           line="-warn:+unused -Xemacs"/>
        <classpath refid="compile.classpath" />
      </javac>

compilerarg 요소를 사용하면 추가 명령 줄 인수를 이클립스 컴파일러에 전달할 수도 있습니다.

여기 에서 다음과 같이 명령 줄에서 호출 되는 전체 ant 스크립트 예제를 찾을 수 있습니다 .

java -cp C:/eclipse-SDK-3.4-win32/eclipse/plugins/org.eclipse.equinox.launcher_1.0.100.v20080509-1800.jar org.eclipse.core.launcher.Main -data "C:\Documents and Settings\Administrator\workspace" -application org.eclipse.ant.core.antRunner -buildfile build.xml -verbose

그러나 개미와 관련된 모든 것은 Keith가 추구하는 것이 아닙니다.

일괄 컴파일의 경우, 참조하시기 바랍니다 자바 코드 컴파일 , 특히 "절 배치 컴파일러 사용을 "

배치 컴파일러 클래스는 JDT Core 플러그인에 있습니다. 클래스 이름은 org.eclipse.jdt.compiler.batch.BatchCompiler입니다. plugins / org.eclipse.jdt.core_3.4.0..jar에 패키지되어 있습니다. 3.2부터는 별도의 다운로드로도 제공됩니다. 파일 이름은 ecj.jar입니다.
3.3부터이 jar에는 jsr199 (Compiler API)에 대한 지원과 jsr269 (Annotation processing)에 대한 지원도 포함됩니다. 주석 처리 지원을 사용하려면 1.6 VM이 필요합니다.

배치 컴파일러를 실행하면 명령 줄에서

java -jar org.eclipse.jdt.core_3.4.0<qualifier>.jar -classpath rt.jar A.java

또는:

java -jar ecj.jar -classpath rt.jar A.java

모든 자바 컴파일 옵션은 해당 섹션에서도 자세히 설명합니다.

Visual Studio 명령 줄 컴파일 기능과의 차이점은 Eclipse가 명령 줄 인수에서 .project 및 .classpath를 직접 읽는 것처럼 보이지 않는다는 것 입니다. .project 및 .classpath에 포함 된 모든 정보를 다양한 명령 줄 옵션으로보고해야 매우 동일한 컴파일 결과를 얻을 수 있습니다.

그래서 짧은 대답은 "예, 이클립스가 그렇습니다."입니다. ;)


2
ant4eclipse 프로젝트를 사용하여 Eclipse 프로젝트로 작업 공간을 컴파일 할 수 있지만 추출한 메타 정보를 기반으로 필요한 모든 단계를 수동으로 수행해야하므로 많은 팔꿈치 그리스가 필요합니다. 사내 프로젝트를 위해 해봤지만 꼭 필요한 경우가 아니면 권장하지 않습니다! 우리는 :-D
Thorbjørn Ravn Andersen

@ Thorbjørn Ravn Andersen :이 피드백에 감사드립니다. 또한 여기에 포함 된 "팔꿈치 그리스"의 종류를 설명이 스레드에 대한 답변을 게시 할 수)
VonC

글쎄, 내가 ant4eclipse (projectSet.psf 파일을 필요로 함)를 기반으로 함께 해킹 한 것은 "실행 가능한 jar 내보내기"기능을 에뮬레이트하기 위해 꽤나 답이 아니다. 게다가, 이클립스를 실행하지만, 개미를 사용하여 Eclipse를 모방하지 않습니다 : D
Thorbjørn Ravn 안데르센

이 오래된 답변을 보았습니다. "Eclipse 구성 파일을 사용하여 Eclipse 빌드 에뮬레이션"이 장기적으로 너무 취약하다는 것을 발견했으며 다른 사람들에게 그렇게하지 말 것을 강력히 권고합니다. 대신 Maven 프로젝트를 사용하십시오.
Thorbjørn Ravn Andersen

1
@JeffPuckettII 감사합니다. 링크를 복원했습니다.
VonC

8

27 년 후 나도 IDE에서 개발하는 것이 불편합니다. 나는 위의 제안을 시도해 보았고 모든 것을 올바르게 따르지 않았을 것입니다. 그래서 웹 검색을 수행하고 ' http://incise.org/android-development-on-the- command-line.html '.

답변은 위의 모든 답변의 조합 인 것 같았습니다 (내가 틀렸다면 알려 주시고 사과드립니다).

위에서 언급했듯이 eclipse / adt는 필요한 ant 파일을 생성하지 않습니다. Eclipse IDE없이 (그리고 ant 스크립트를 생성하지 않고) 컴파일하려면 :

1) 최상위 디렉토리에 build.xml을 생성하십시오.

android list targets  (to get target id used below)

android update project --target target_id --name project_name  --path top_level_directory

   ** my sample project had a target_id of 1 and a project name of 't1', and 
   I am building from the top level directory of project
   my command line looks like android update project --target 1 --name t1 --path `pwd`

2) 다음으로 프로젝트를 컴파일합니다. '개미'를 사용하지 말라는 요청에 조금 혼란 스러웠습니다. 바라건대-요청자는 개미 스크립트를 작성하고 싶지 않다는 것을 의미했습니다. 다음 단계는 ant를 사용하여 응용 프로그램을 컴파일하는 것이기 때문에 이것을 말합니다.

 ant target

    this confused me a little bit, because i thought they were talking about the
    android device, but they're not.  It's the mode  (debug/release)
    my command line looks like  ant debug

3) 기기에 apk를 설치하려면 ant를 다시 사용해야했습니다.

 ant target install

    ** my command line looked like  ant debug install

4) 내 안드로이드 폰에서 프로젝트를 실행하려면 adb를 사용합니다.

 adb shell 'am start -n your.project.name/.activity'

    ** Again there was some confusion as to what exactly I had to use for project 
    My command line looked like adb shell 'am start -n com.example.t1/.MainActivity'
    I also found that if you type 'adb shell' you get put to a cli shell interface
    where you can do just about anything from there.

3A) 참고 : 장치에서 로그를 보려면 다음을 사용하십시오.

 adb logcat

3B) 두 번째 참고 : 위에서 언급 한 링크에는 명령에서 전체 프로젝트를 빌드하는 지침도 포함되어 있습니다.

바라건대 이것은 질문에 도움이 될 것입니다. 여기에서이 주제에 대해 무엇이든 찾을 수있어서 정말 기뻤 습니다.


1
프로젝트가 이미 (디버그 모드 f.ex.에) 내장되어있는 경우에는 사용할 수있는 ant installd건물없이 설치
SERV-INC

4

일반적인 접근 방식은 다른 방식으로 작동합니다. Maven 또는 ant를 기반으로 빌드를 만든 다음 선택한 IDE에 대한 통합을 사용하여 독립적 인 IDE를 사용합니다. 새로운 팀원을 신속하게 지원하거나 자동화 된 빌드를 위해 지속적인 통합 서버를 사용하려고 할 때 중요합니다. maven을 사용하고 무거운 작업을 수행하는 것이 좋습니다. pom 파일을 만들고 mvn eclipse : eclipse를 통해 이클립스 프로젝트를 생성합니다. HTH


4
모든 개발자에게 행동을 변경하도록 지시하는 대신 현재 워크 플로를 에뮬레이션하는 것이 훨씬 더 좋습니다. 특히 Eclipse가 개미보다 훨씬 빠를 때.
Thorbjørn Ravn Andersen

2

이 질문 에는 헤드리스 빌드에 대한 몇 가지 유용한 링크가 포함되어 있지만 대부분 플러그인 빌드에 적합합니다. 순수 Java 프로젝트에 얼마나 많이 적용될 수 있는지 잘 모르겠습니다.


1

여기에 2 센트를 더하고 싶었습니다. @Kieveli가 비 win32에 대해 제안한대로 시도했지만 (아래에서 반복됨) 저에게는 작동하지 않았습니다 (Eclipse가있는 CentOS : Luna).

java -cp startup.jar -noSplash -data "D:\Source\MyProject\workspace" -application org.eclipse.jdt.apt.core.aptBuild

Eclipse (Luna)를 사용하는 CentOS의 특정 설정에서 다음과 같이 작동했습니다.

$ECLIPSE_HOME/eclipse -nosplash -application org.eclipse.jdt.apt.core.aptBuild  startup.jar -data ~/workspace

출력은 다음과 같아야합니다.

Building workspace
Building '/RemoteSystemsTempFiles'
Building '/test'
Invoking 'Java Builder' on '/test'.
Cleaning output folder for test
Build done
Building workspace
Building '/RemoteSystemsTempFiles'
Building '/test'
Invoking 'Java Builder' on '/test'.
Preparing to build test
Cleaning output folder for test
Copying resources to the output folder
Analyzing sources
Compiling test/src/com/company/test/tool
Build done

왜 두 번했는지는 확실하지 않지만 작동하는 것 같습니다.


0

안녕하세요 VonC 댓글에 추가합니다. 내 프로젝트를 컴파일하기 위해 ecj 컴파일러를 사용하고 있습니다. 클래스 중 일부를 찾을 수 없다는 expcetion을 던졌습니다. 그러나 프로젝트는 javac 컴파일러로 잘 진행되었습니다.

그래서 방금 클래스 경로에 클래스를 추가했으며 (인수로 전달해야 함) 이제 제대로 작동합니다 ... :)

쿨 비르 싱


-3

짧은 답변. 아니요. Eclipse에는 프로젝트를 빌드하기위한 Visual Studio와 같은 명령 줄 스위치가 없습니다.


5
짧은 대답 : 예. 이클립스는 일종의 않습니다. .project 및 .classpath에 포함 된 모든 정보를 다양한 명령 줄 옵션으로보고해야하는 경우를 제외하고
VonC

다른 응답에서 언급했듯이 일반적으로 ant 또는 maven과 같은 외부 (Eclipse로) 빌드 솔루션이이를 위해 사용됩니다.
JR Lawhorne
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.