You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@maven.apache.org by "Karl Heinz Marbaise (Jira)" <ji...@apache.org> on 2019/12/14 21:27:00 UTC

[jira] [Closed] (MASSEMBLY-445) Support parametrization of component descriptors

     [ https://issues.apache.org/jira/browse/MASSEMBLY-445?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Karl Heinz Marbaise closed MASSEMBLY-445.
-----------------------------------------
    Resolution: Implemented

> Support parametrization of component descriptors
> ------------------------------------------------
>
>                 Key: MASSEMBLY-445
>                 URL: https://issues.apache.org/jira/browse/MASSEMBLY-445
>             Project: Maven Assembly Plugin
>          Issue Type: Wish
>          Components: component descriptor
>    Affects Versions: 2.2-beta-4
>            Reporter: Stevo Slavić
>            Priority: Major
>         Attachments: org.apache.maven.plugins.maven-assembly-plugin-MASSEMBLY-445.patch
>
>
> Please support parametrization of component descriptors. One should be able to specify parameter placeholders in component descriptors, and when referencing component descriptor from an assembly descriptor provide actual parameter value(s) which would then be applied to the parameter placeholders. One should be able to set global parameters (for all component descriptors), and component descriptor specific parameters, with component descriptor specific parameters overriding global ones if their names overlap.
> This would be useful if e.g. one uses assembly descriptors to specify assemblies for different deployment environments, and if these assemblies differ (see example [1]) only in which environment specific configuration file should be included in the assembly where this distinction is based on configuration file name suffix - this suffix could be passed to shared component descriptor as parameter, like in example [2].
> [1] assembly descriptor example without parameters
> {code:xml}
> <?xml version="1.0" encoding="UTF-8"?>
> <assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.1"
> 			xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> 			xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.1
> 								http://maven.apache.org/xsd/assembly-1.1.1.xsd">
> 	<id>prod</id>
> 	<formats>
> 		<format>war</format>
> 	</formats>
> 	<includeBaseDirectory>false</includeBaseDirectory>
> 	<fileSets>
> 		<fileSet>
> 			<directory>${project.build.directory}/${project.build.finalName}</directory>
> 			<outputDirectory>/</outputDirectory>
> 			<excludes>
> 				<exclude>**/jdbc.properties</exclude>
> 				<exclude>**/jdbc-*.properties</exclude>
> 			</excludes>
> 			<excludes>
> 				<exclude>**/log4j.xml</exclude>
> 				<exclude>**/log4j-*.xml</exclude>
> 			</excludes>
> 		</fileSet>
> 	</fileSets>
> 	<files>
> 		<file>
> 			<source>${project.build.outputDirectory}/com/foo/bar/cfg/jdbc-${environment}.properties</source>
> 			<outputDirectory>WEB-INF/classes/com/foo/bar/cfg/</outputDirectory>
> 			<destName>jdbc.properties</destName>
> 		</file>
> 		<file>
> 			<source>${project.build.outputDirectory}/com/foo/bar/cfg/log4j-${environment}.xml</source>
> 			<outputDirectory>WEB-INF/classes/</outputDirectory>
> 			<destName>log4j.xml</destName>
> 		</file>
> 	</files>
> </assembly>
> {code}
> [2] parametrized component descriptor and usage example
> src/main/assembly/component.xml
> {code:xml}
> <component>
> 	<fileSets>
> 		<fileSet>
> 			<directory>${project.build.directory}/${project.build.finalName}</directory>
> 			<outputDirectory>/</outputDirectory>
> 			<excludes>
> 				<exclude>**/jdbc.properties</exclude>
> 				<exclude>**/jdbc-*.properties</exclude>
> 			</excludes>
> 			<excludes>
> 				<exclude>**/log4j.xml</exclude>
> 				<exclude>**/log4j-*.xml</exclude>
> 			</excludes>
> 		</fileSet>
> 	</fileSets>
> 	<files>
> 		<file>
> 			<source>${project.build.outputDirectory}/com/foo/bar/cfg/jdbc-${environment}.properties</source>
> 			<outputDirectory>WEB-INF/classes/com/foo/bar/cfg/</outputDirectory>
> 			<destName>jdbc.properties</destName>
> 		</file>
> 		<file>
> 			<source>${project.build.outputDirectory}/com/foo/bar/cfg/log4j-${environment}.xml</source>
> 			<outputDirectory>WEB-INF/classes/</outputDirectory>
> 			<destName>log4j.xml</destName>
> 		</file>
> 	</files>
> </component>
> {code}
> src/main/assembly/packaging-prod.xml
> {code:xml}
> <?xml version="1.0" encoding="UTF-8"?>
> <assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.1"
> 			xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> 			xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.1
> 								http://maven.apache.org/xsd/assembly-1.1.1.xsd">
> 	<id>prod</id>
> 	<formats>
> 		<format>war</format>
> 	</formats>
> 	<includeBaseDirectory>false</includeBaseDirectory>
> 	<componentDescriptors>
> 		<componentDescriptor>
> 			<pathToComponentDescriptor>src/main/assembly/component.xml</pathToComponentDescriptor>
> 			<parameters>
> 				<parameter>
> 					<name>environment</environment>
> 					<value>prod</value>
> 				</parameter>
> 			</parameters
> 		</componentDescriptor>
> 	</componentDescriptors>
> </assembly>
> {code}
> src/main/assembly/packaging-stag.xml
> {code:xml}
> <?xml version="1.0" encoding="UTF-8"?>
> <assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.1"
> 			xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> 			xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.1
> 								http://maven.apache.org/xsd/assembly-1.1.1.xsd">
> 	<id>stag</id>
> 	<formats>
> 		<format>war</format>
> 	</formats>
> 	<includeBaseDirectory>false</includeBaseDirectory>
> 	<componentDescriptors>
> 		<componentDescriptor>
> 			<pathToComponentDescriptor>src/main/assembly/component.xml</pathToComponentDescriptor>
> 			<parameters>
> 				<!-- component descriptor specific parameters -->
> 				<parameter>
> 					<name>environment</environment>
> 					<value>stag</value>
> 				</parameter>
> 			</parameters>
> 		</componentDescriptor>
> 		</parameters>
> 			<!-- global parameters for all component descriptors -->
> 		</parameters>
> 	</componentDescriptors>
> </assembly>
> {code}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)