2013-06-01 3 views
1

Gradle 빌드 도구를 사용하여 OSGi 번들을 작성하는 간단한 사용 사례가 있습니다. 빌드 경로에 java 파일이 있으면 빌드가 성공하지만 그렇지 않으면 실패합니다.Gradle의 OSGi 번들 빌드 문제

나는 gradle 스크립트 안에 'osgi'플러그인을 사용하고 자바 파일없이 빌드하려고합니다. 빌드는 항상 다음과 같은 오류와 함께 실패합니다

내가 미세 할 수 일부 Gradle을에서 그것을 할 방법하지만이 있어야 확신

에 MANIFEST.MF를 복사 할 수 없습니다. 귀하의 경험에 따라 해결할 수있는 아이디어. --stacktrace으로 실행

답변

0

osgi 플러그인이 모두 osgijava 플러그인을 적용 할 경우 제대로 처리하지 않음을 나타냅니다 있지만 자바 코드가 존재하지 않습니다. java 플러그인을 제거하면 문제가 해결됩니다.

2

나는 오늘도이 문제에 시달렸고, @ Peter의 수정은 나에게 도움이되지 못했다. (처음에는 자바 플러그인을 적용하지 않았다 ...). 그러나 Google 검색 시간이 지나면 나는 this thread을 발견하여 문제를 찾는데 도움이되었습니다. 더 클래스 파일이 항아리에서 발견되지 않을 때

기본적으로, (as Peter stated) 오류가 발생하는 것 같다 - 플러그인은 다음 모든 ImportExport 정보의 기반이 패키지 이름의 클래스를 검사 할 수 없기 때문에 내 생각이다. 나는 모든 소스를 통해 루프, 그들을 위해 jar 작업을 생성하는 설정 때문에 다음은 다음과 같습니다, 내 실제 빌드 코드에서

classesDir = theSourceSet.output.classesDir 
classpath = theSourceSet.runtimeClasspath 

:

내 솔루션은 매니페스트 사양에 다음을 추가했다

sourceSets.each { ss -> 
    assemble.dependsOn task("jar${ss.name.capitalize()}", type: Jar, dependsOn: ss.getCompileTaskName('Java')) { 
     from ss.output 
     into 'classes' 

     manifest = osgiManifest { 
      classesDir = ss.output.classesDir 
      classpath = ss.runtimeClasspath 
      // Other properties, like name and symbolicName, also set based on 
      // the name of the source set 
     } 

     baseName = ss.name 
    } 
} 
0

Java 코드가있는 경우에도 동일한 문제가있었습니다. - 에릭

classesDir = sourceSets.main.output.classesDir 
classpath = sourceSets.main.runtimeClasspath   

다음 osgiManifest 폐쇄에이 두 줄을 추가 이 문제를 해결