Open apjanke opened 2 years ago
Tried adding a <outputDirectory/>
to maven-assembly-plugin's <configuration>
as described in this Stack Overflow answer, but that had no apparent effect, and the warnings kept coming.
Wonder if that trailing "/site" in the warning message is a clue? There's no actual /site
reference in the pom.xml
assembly config section, or in the src/assembly/bin.xml
file it references. But that bin.xml
does have a <includeSiteDirectory>true</includeSiteDirectory>
item.
Yeah: if I remove that includeSiteDirectory
, then the warnings go away. But I don't know what effect that has on the resulting assembly tarballs. Gotta investigate that.
[INFO] <<< maven-assembly-plugin:2.6:assembly (default-cli) < package @ log4j <<<
[INFO]
[INFO]
[INFO] --- maven-assembly-plugin:2.6:assembly (default-cli) @ log4j ---
[INFO] Reading assembly descriptor: src/assembly/bin.xml
[INFO] Building zip: /Users/janke/repos/slf4m-jankalog/src/opp/opp-munged/log4j-1.2.15/target/log4j-1.2.15-janklab.1-preview.zip
[INFO] Building tar: /Users/janke/repos/slf4m-jankalog/src/opp/opp-munged/log4j-1.2.15/target/log4j-1.2.15-janklab.1-preview.tar.gz
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
Here's opengeospatial/ets-ogcapi-features10
having what looks like the exact same issue. They solved it by removing <includeSiteDirectory>
, and replacing it with regular file references:
<fileSets>
[...]
<fileSet>
<directory>${project.build.directory}/site</directory>
<outputDirectory>site</outputDirectory>
<filtered>true</filtered>
</fileSet>
I commented on that opengeospatial bug; here's what I said.
I found some reference doco for the maven-site-assembly plugin:
assembly:assembly
mojo parameter reference, which I think documents the <configuration>
format in the POM<assembly>
format for the reference XML file, but not POM's <configuration>
' formatassembly:single
mojo parameter referenc, which I think documents the <configuration>
in the POMNone of those have a <siteDirectory>
element/parameter that I can see.
But if I look at the Javadoc for some classes in the assembly 3.4.2 plugin's implmentation, there are Java getter/setters for a siteDirectory
JavaBeans property in some of its classes.
org.apache.maven.plugins.assembly.mojos.SingleAssemblyMojo
org.apache.maven.plugins.assembly.mojos.AbstractAssemblyMojo
org.apache.maven.plugins.assembly.AssemblerConfigurationSource
Those class's other properties look like the correspond to the elements in the POM <configuration>
section for maven-assembly-plugin
. So I bet that's where it goes. And IntelliJ's POM XML Intellisense feature seems to agree:
I don't know why siteDirectory
doesn't show up in the more user-facing documentation above. Is this actually an internal-use method for the plugin itself, and its omission was intentional? Or is it a documentation bug in whatever's generating those web pages? (And why are the "mojo" documentation pages for the <configuration>
sections of Maven plugins so hard to find? They don't seem to be linked anywhere in the navigation stuff in the plugins' main pages like this maven-compiler-plugin
page; I either have to get lucky with a link in the body text of the plugin page, or google for "maven-\<pluginname>-plugin mojo".)
I re-enabled <includeSiteDirectory>true</includeSiteDirectory>
, and stuck this in the assembly POM <configuration>
section for my project:
<configuration>
<siteDirectory>/some/nonexistent/bogus/path</siteDirectory>
and it started kicking out this error:
[INFO] --- maven-assembly-plugin:2.6:assembly (default-cli) @ log4j ---
[INFO] Reading assembly descriptor: src/assembly/bin.xml
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 11.707 s
[INFO] Finished at: 2022-09-15T01:05:11-04:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-assembly-plugin:2.6:assembly (default-cli) on project log4j: site did not exist in the target directory - please run site:site before creating the assembly: Mojo configuration is invalid: site did not exist in the target directory - please run site:site before creating the assembly -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException
So I think that's the right place for <siteDirectory>
; but I dunno how to use it here.
Sounds like with newer maven-assembly-plugin versions, I should be using the assembly:single
target instead of assembly:assembly
anyway?
[log4j-1.2.15] $ mvn clean >/dev/null
[log4j-1.2.15] $ mvn assembly:single
[INFO] Scanning for projects...
[INFO]
[INFO] -------------------< net.janklab.shmorg.log4j:log4j >-------------------
[INFO] Building Janklab-Munged Apache Log4j 1.2.15-janklab.1-preview
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-assembly-plugin:2.6:single (default-cli) @ log4j ---
[INFO] Reading assembly descriptor: src/assembly/bin.xml
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.534 s
[INFO] Finished at: 2022-09-15T01:19:05-04:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-assembly-plugin:2.6:single (default-cli) on project log4j: Failed to create assembly: Error adding file to archive: /Users/janke/repos/slf4m-jankalog/src/opp/opp-munged/log4j-1.2.15/target/log4j-1.2.15-janklab.1-preview.jar -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
[log4j-1.2.15] $
Same error if I do mvn compile site assembly:single
. Maybe I'm missing some prereequisite mvn
build step here?
Aha: I was missing mvn package
.
[log4j-1.2.15] $ mvn clean >/dev/null; cp NTEventLogAppender.dll target
[log4j-1.2.15] $ mvn package >/dev/null
[exec] Execute failed: java.io.IOException: Cannot run program "i586-mingw32msvc-windres" (in directory "/Users/janke/repos/slf4m-jankalog/src/opp/opp-munged/log4j-1.2.15/src/ntdll"): error=2, No such file or directory
[log4j-1.2.15] $ mvn assembly:single
[INFO] Scanning for projects...
[INFO]
[INFO] -------------------< net.janklab.shmorg.log4j:log4j >-------------------
[INFO] Building Janklab-Munged Apache Log4j 1.2.15-janklab.1-preview
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-assembly-plugin:2.6:single (default-cli) @ log4j ---
[INFO] Reading assembly descriptor: src/assembly/bin.xml
[INFO] Building zip: /Users/janke/repos/slf4m-jankalog/src/opp/opp-munged/log4j-1.2.15/target/log4j-1.2.15-janklab.1-preview.zip
[INFO] Building tar: /Users/janke/repos/slf4m-jankalog/src/opp/opp-munged/log4j-1.2.15/target/log4j-1.2.15-janklab.1-preview.tar.gz
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.124 s
[INFO] Finished at: 2022-09-15T01:21:36-04:00
[INFO] ------------------------------------------------------------------------
[log4j-1.2.15] $
I wonder why that's not a defined dependency of assembly:single
and run automatically?
Okay, so I think this is the command I should be using to do a full clean build and package-dist under Maven 3:
mvn clean; cp NTEventLogAppender.dll target; mvn compile site package assembly:single
Runs without error now. (Usually. I get intermittent errors complaining about missing JARs and stuff. Dunno what's up with that.)
When I bumped maven-assembly-plugin from 2.2.2 to 2.6, I started getting this warning.