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

Garret Wilson commented on MASSEMBLY-992:
-----------------------------------------

{quote}One can use remote resources for that.{quote}

And what do you mean by "remote resources"? Do you mean simply putting my 
descriptor up on some HTTP server and putting its URL in the POM? But that 
defeats the purpose of the the Maven build and artifact version management.

In can inherit from a parent POM a ready-made configuration for an execution of 
Maven Shade Plugin (as one example out of dozens if not hundreds) without 
writing an external file or hosting a "remote resource" or publishing a 
separate artifact with the descriptor. I just configure the Maven Shade Plugin 
in the parent POM, and it's available in the child POM. The gist of this ticket 
is that I should be able to do the same thing with the Maven Assembly Plugin 
without jumping through hoops and creating elaborate workarounds.

> 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
>
> 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 
> [#685|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