Buildr Manifest генерирует путь к классу из пакета EAR - PullRequest
1 голос
/ 09 ноября 2011

Я использую (и изучаю) Buildr для сборки и упаковки своих проектов.Я хотел бы автоматически сгенерировать атрибут class-path в файле MANIFEST EJB проектов.В настоящее время я делаю:

manifest_cp = compile.dependencies.map { |d| 
    "#{File.basename(d.name)}"
}.join(" ")

package(:jar).with :manifest=>manifest.merge('Class-Path'=>manifest_cp)

Я новичок в Ruby и Buildr, так что, вероятно, есть лучший способ сделать это.Однако на самом деле я надеялся создать jar, который я определяю и упаковываю в моем EAR, в отличие от получения зависимостей компиляции в моем JAR.

Я упаковываю свой проект ear как:

package(:ear).include(ANTLR, AOP_ALLIANCE, ...

Возможно ли в моей сборке проекта EJB при упаковке jar и изменении манифеста я создаю атрибут Class-Path со всеми упакованными зависимостямив ухе?Кроме того, я также хотел бы исключить одну или две зависимости?

спасибо

ОБНОВЛЕНИЕ

Я пробовал другой подход, который кажется лучше (но все же, вероятно, есть намного лучшие способы, чем у меня).Я создал константу, в которой хранятся все мои артефакты, которые я хочу включить в EAR, а затем собрал строку classpath:

EARLIBS = [ANTLR, AOP_ALLIANCE, ... ]
manifest_cp = Buildr.artifacts(EARLIBS).each { |artifact| artifact.invoke }.map{ |d| 
        "#{File.basename(d.to_s)}"
}.join(" ")

Когда я упаковываю EJB, я указываю manifest_cp, который был создан выше:

package(:jar).with :manifest=>manifest.merge('Class-Path'=>manifest_cp)

Когда я упаковываю EAR, я ссылаюсь на объявленную константу со всеми артефактами:

package(:ear).include(EARLIBS)

Даже если это работает для того, чего я хочу, я был бы признателен, если бы у кого-то был лучший способ сделать этоэто

спасибо,

1 Ответ

0 голосов
/ 27 февраля 2012

Документ сборки для EarTask содержит решение Я считаю:

Все указанные библиотеки добавляются в архив EAR, и запись манифеста Class-Path модифицируется для каждогоEAR компонент.

...