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

Garret Wilson edited comment on MASSEMBLY-992 at 6/27/23 7:59 PM:
------------------------------------------------------------------

After reading and re-reading your comments and GitHub project, and looking at 
the [files uploaded to Maven 
Central|https://repo1.maven.org/maven2/net/sf/michael-o/michael-o-parent/17/], 
I think what you're really saying is that you used the Assembly Plugin to 
create and upload _some other_ ZIP file to Maven Central along with your parent 
POM.

OK, assuming that I modify that to include an assembly descriptor, how would I 
use that assembly descriptor in a child POM?

Let's say that in my POM I use this:

{code:xml}
<parent>
  <groupId>net.sf.michael-o</groupId>
  <artifactId>michael-o-parent</artifactId>
  <version>17</version>
</parent>
{code}

I see that's published on Maven Central.

Now when I issue:

{code}
mvn clean package
{code}

You're saying that Maven will then automatically go out and download some file 
that was "attached" to the parent POM, with no further action on my part, and 
place them somewhere so that the child POM could use it for the assembly plugin?


was (Author: garretwilson):
Pardon me, but either I'm a little slow or somehow we're talking past each 
other or something else.

So let's say that in my POM I use this:

{code:xml}
<parent>
  <groupId>net.sf.michael-o</groupId>
  <artifactId>michael-o-parent</artifactId>
  <version>17</version>
</parent>
{code}

I see that's published on Maven Central.

Now when I issue:

{code}
mvn clean package
{code}

You're saying that Maven will then automatically go out and download 
[{{michael-o-parent-17-site-resources.zip}}|https://search.maven.org/remotecontent?filepath=net/sf/michael-o/michael-o-parent/17/michael-o-parent-17-site-resources.zip],
 with no further action on my part, and place them somewhere?

What mechanism does that? I've never heard of such a mechanism.

And where would Maven place {{michael-o-parent-17-site-resources.zip}} so that 
it would be available to the child POM?

> 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