[ 
https://issues.apache.org/jira/browse/MASSEMBLY-992?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17789681#comment-17789681
 ] 

Wojtek commented on MASSEMBLY-992:
----------------------------------

I concur that allowing inlining configuration of assembly descriptor would be 
the most straightforward (and simplest to manage and maintain) giving a couple 
of handy options (like defining type of inheritance). In the dup issue 
(massembly-903) it was mentioned that the con to this would be making "pom file 
bloated" but truth be told - they already can be quite bloated....

> Facility to define assembly descriptor in body of POM
> -----------------------------------------------------
>
>                 Key: MASSEMBLY-992
>                 URL: https://issues.apache.org/jira/browse/MASSEMBLY-992
>             Project: Maven Assembly Plugin
>          Issue Type: New Feature
>            Reporter: Garret Wilson
>            Priority: Major
>             Fix For: waiting-for-feedback
>
>
> The Maven Assembly Plugin allows custom descriptors to be defined, but only 
> in an external file. Please add the capability to define the descriptor in 
> the body of the POM itself.
> Requiring a separate descriptor file makes it almost impossible to declare an 
> assembly in a parent POM so that it can be inherited by child POMs. The 
> documentation describe a way to [share 
> descriptors|https://maven.apache.org/plugins/maven-assembly-plugin/examples/sharing-descriptors.html],
>  but it is complex and doesn't obviously support Maven property interpolation.
> Without this facility, in order to easily inherit an assembly from a parent 
> POM, I'm currently resorting to workaround involving AntRun to generate an 
> assembly descriptor on the fly. See [this 
> {{pom.xml}}|https://github.com/globalmentor/globalmentor-root/blob/main/pom.xml].
>  It's pretty convoluted and tedious to get right. In addition, it has to be 
> placed in a phase that is guaranteed to run before the execution of the Maven 
> Assembly Plugin itself.
> {code:xml}
>           <plugin>
>             <groupId>org.apache.maven.plugins</groupId>
>             <artifactId>maven-antrun-plugin</artifactId>
>             <executions>
>               <execution>
>                 <!--
>                   Generates an assembly descriptor for the binary 
> distribution.
>                 -->
>                 <id>generate-bin-assembly-descriptor</id>
>                 <phase>prepare-package</phase>
>                 <goals>
>                   <goal>run</goal>
>                 </goals>
>                 <configuration>
>                   <skip>${_isSkipGenerateExe}</skip>
>                   <target>
>                     <echo file="${assemblyDirectory}/bin.xml" 
> encoding="UTF-8">
>                       <![CDATA[<assembly 
> xmlns="http://maven.apache.org/ASSEMBLY/2.0.0"; 
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
> xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.0.0 
> http://maven.apache.org/xsd/assembly-2.0.0.xsd";>
>   <id>bin</id>
>   <formats>
>     <format>tar.xz</format>
>     <format>zip</format>
>   </formats>
>   <fileSets>
>     <fileSet>
>       <directory>${project.build.directory}</directory>
>       <includes>
>         <include>*-exe.jar</include>
>       </includes>
>       <outputDirectory>bin</outputDirectory>
>     </fileSet>
>     <fileSet>
>       <directory>${binOutputDirectory}</directory>
>       <outputDirectory>bin</outputDirectory>
>       <!--
>         Set access permissions to `-rwxrwxr-x`, which corresponds to adding 
> `+x` to a created file.
>         Manually setting permissions files in the archive is necessary for 
> building on Windows,
>         because input files will have lost attributes during the build 
> process.
>       -->
>       <fileMode>0775</fileMode>
>     </fileSet>
>   </fileSets>
> </assembly>]]>
>                     </echo>
>                   </target>
>                 </configuration>
>               </execution>
>             </executions>
>           </plugin>
> {code}
> This was requested and finally implemented for Versions Maven Plugin; see 
> [#258|https://github.com/mojohaus/versions/issues/258] and 
> [#684|https://github.com/mojohaus/versions/issues/684], along with [_Versions 
> Maven Plugin rules that are 
> inheritable_|https://stackoverflow.com/q/72416739] on Stack Overflow.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to