#java #maven
Вопрос:
Как часть сборки maven, как прочитать все файлы ресурсов из зависимостей в pom.xml. Постановка проблемы : У меня есть три зависимости в моей pom.xml файл и каждая зависимость имеют список xml-файлов в папке ресурсов, теперь я хочу прочитать все xml из всех зависимостей как часть сборки maven с использованием java, создать файл sing и сохранить по заданному пути.
Example : pom.xml file.
```<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.test</groupId>
<artifactId>merge</artifactId>
<version>0.0.1-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>com.test</groupId>
<artifactId>first</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.test</groupId>
<artifactId>second</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.test</groupId>
<artifactId>three</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
</project>```
Resource file in dependencies :
In "first" dependency resources.
/src/main/resources/test/first-1.xml
/src/main/resources/test/first-2.xml
/src/main/resources/test/first-3.xml
In "second" dependency resources.
/src/main/resources/test/second-1.xml
/src/main/resources/test/second-2.xml
In "three" dependency resources.
/src/main/resources/test/three-1.xml
/src/main/resources/test/three-2.xml
Expected Output:
It should combine all above xml files and create merge-all.xml file in "merge" jar.
Есть один root.xml файл, а затем скопируйте содержимое других xml — файлов и создайте новое имя xml-файла.
например :
- root.xml : первая банка
<cache-config
xmlns="http://xmlns.oracle.com/coherence/coherence-cache-config"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.oracle.com/coherence/coherence-cache-config/1.2/coherence-cache-config.xsd">
<caching-scheme-mapping>
<cache-mapping>
<cache-name>local-cache</cache-name>
<scheme-name>local-scheme</scheme-name>
</cache-mapping>
</caching-scheme-mapping>
<caching-schemes>
<local-scheme>
<scheme-name>local-scheme</scheme-name>
<eviction-policy>LRU</eviction-policy>
<high-units>10</high-units>
<expiry-delay>5s</expiry-delay>
</local-scheme>
</caching-schemes>
</cache-config> ```
2) one.xml : second jar
<?xml version="1.0"?>
<cache-config
xmlns="http://xmlns.oracle.com/coherence/coherence-cache-config"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.oracle.com/coherence/coherence-cache-config/1.2/coherence-cache-config.xsd">
<caching-scheme-mapping>
<cache-mapping>
<cache-name>one-cache</cache-name>
<scheme-name>local-scheme</scheme-name>
</cache-mapping>
</caching-scheme-mapping>
<caching-schemes>
</caching-schemes>
</cache-config>
out.xml : the final generated out put.
<?xml version="1.0"?>
<cache-config
xmlns="http://xmlns.oracle.com/coherence/coherence-cache-config"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.oracle.com/coherence/coherence-cache-config/1.2/coherence-cache-config.xsd">
<caching-scheme-mapping>
<cache-mapping>
<cache-name>local-cache</cache-name>
<scheme-name>local-scheme</scheme-name>
</cache-mapping>
<cache-mapping>
<cache-name>one-cache</cache-name>
<scheme-name>local-scheme</scheme-name>
</cache-mapping>
</caching-scheme-mapping>
<caching-schemes>
<local-scheme>
<scheme-name>local-scheme</scheme-name>
<eviction-policy>LRU</eviction-policy>
<high-units>10</high-units>
<expiry-delay>5s</expiry-delay>
</local-scheme>
</caching-schemes>
</cache-config>```
Комментарии:
1. Я думаю, для этого вам нужно написать плагин Maven.
2. Предположительно, вам нужно проанализировать XML-файлы, а не просто объединить их?
3. Если вы используете плагин сборки, вы можете создать containerDescriptorHandler для обработки файлов в зависимостях и добавления новых файлов.
4. не могли бы вы, пожалуйста, помочь мне с API-интерфейсами плагинов maven для чтения всех ресурсов из зависимостей.
5. Вам понадобится дескриптор сборки, который помещает эти XML-файлы в ваш конечный артефакт (см. maven.apache.org/plugins/maven-assembly-plugin/assembly.html ), а затем напишите containerDescriptorHandler для объединения xml-файлов (см. maven.apache.org/plugins/maven-assembly-plugin/examples/single/… ) Вы не ответили на мой вопрос выше о том, что вам на самом деле нужно сделать с XML-файлами.