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

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

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

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


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

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

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



답변

명령 줄에서 작업 공간을 통해 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 버전에 따라 다릅니다.


답변

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에 포함 된 모든 정보를 다양한 명령 줄 옵션으로보고해야 매우 동일한 컴파일 결과를 얻을 수 있습니다.

그래서 짧은 대답은 “예, 이클립스가 그렇습니다.”입니다. 😉


답변

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

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


답변

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


답변

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


답변

여기에 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

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


답변

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

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

쿨 비르 싱