2015-05-26 3 views
3

У меня есть многопроектная градиентная сборка, содержащая 3 проекта: A, B и C.Как включить ресурсы субпроекта в родительский проект?

A и B зависит от C.
C имеет файл myconfig.xml в своей папке resources, которую я хотел бы включить как ресурс в войне, созданный для A и B.

A -- project type - WAR 
    -- depends on - C 
B -- project type - WAR 
    -- depends on - C 
C -- project type - JAVA 
\_ src\main\resources 
\_ myconfig.xml 

Однако просто иметь C как зависимость для A & B не кажется, чтобы сделать это. Файл myconfig.xml: не присутствует в файле WBE-INF\classes файла войны. Это действительно присутствует в файле C.jar, но это не то место, где это необходимо.

Как делить папку ресурсов с C так, чтобы ее в файле войны A и B?

+0

Любой образец проекта онлайн, чтобы попробовать? – Opal

+1

Рассмотрите возможность обращения к xml непосредственно из 'C.jar', так как он находится в пути к классу. Вы можете открыть ресурс как поток. Проверьте этот пост http://stackoverflow.com/questions/20389255/reading-a-resource-file-from-within-jar –

+0

@AntonK. можете ли вы добавить это как ответ – pdeva

ответ

-1

Чтобы использовать ресурс другого проекта, мы должны импортировать этот проект в наш путь к классу.

Для импорта использовать, < classpathentry combineaccessrules = "ложно" типа = "ЦСИ" путь = "/ ваш проект с путем" />

Добавить эту запись в файле (в переменном CLASSPATH .classpath) Проект А и B

+0

, мы говорим о проекте градиента здесь. не знаете, какой файл .classpath вы говорите? – pdeva

+0

Я не знаком с градиентом, но должен быть способ добавить проект зависимости во время компиляции. надеясь, что это будет использоваться полностью: https://java.net/downloads/satjug/Enter%20the%20Gradle.pdf – dilly

3

Я не знаю, как это работает в Gradle но мавена вы могли бы сделать это с помощью Maven-зависимостей-плагин:

<plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-dependency-plugin</artifactId> 
     <configuration> 
      <artifactItems> 
       <artifactItem> 
        <groupId>yourgroupid</groupId> 
        <artifactId>C</artifactId> 
        <version>${project.version}</version> 
        <type>jar</type> 
        <overWrite>true</overWrite> 
        <outputDirectory>${project.build.directory}/WEB-INF/classes</outputDirectory> 
        <includes>myconfig.xml</includes> 
       </artifactItem> 
      </artifactItems> 
     </configuration> 
     <executions> 
      <execution> 
       <phase>compile</phase> 
       <goals> 
        <goal>unpack</goal> 
       </goals> 
      </execution> 
     </executions> 
    </plugin> 

Там должно быть что-то подобное в Gradle тоже просто указатель может быть.

2

Рассмотрите возможность обращения к xml непосредственно из C.jar, так как он находится в пути к классу. Вы можете открыть ресурс как поток. Проверьте это сообщение Reading a resource file from within jar

1

Можете ли вы объяснить, как вы читаете файл myconfig.xml? Если вы попытаетесь использовать getClass().getResourceAsStream("/myconfig.xml"), вы прочитаете его независимо от того, находится ли он в папке WEB-INF/classes или в банке в пути к классам. Очевидно, что лучше помещать ресурсы в банки в папки (например: my-c-lib/myconfig.xml), чтобы избежать столкновений.

Смежные вопросы