<div dir="ltr">I am not sure why the provided dependencies were not being resolved, internally this works by just calling org.apache.maven.project.MavenProject#getArtifacts(), and then building a map from the result. I can&#39;t see anything in the docs that would suggest that provided deps would not be resolved.<div><br></div><div>Stuart</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Jan 15, 2018 at 11:59 PM, Sanne Grinovero <span dir="ltr">&lt;<a href="mailto:sanne@hibernate.org" target="_blank">sanne@hibernate.org</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="HOEnZb"><div class="h5">On 15 January 2018 at 07:32, Stuart Douglas &lt;<a href="mailto:stuart.w.douglas@gmail.com">stuart.w.douglas@gmail.com</a>&gt; wrote:<br>
&gt;<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; It looks like the Feature Pack plugin is expecting the module.xml<br>
&gt;&gt; &gt;&gt; files to be statically committed into the same directory structure as<br>
&gt;&gt; &gt;&gt; were they need to end up, but since the slot id needs to be part of<br>
&gt;&gt; &gt;&gt; such path, looks like I can&#39;t use it? Should I pre-process the module<br>
&gt;&gt; &gt;&gt; resources with the assembly plugin?<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; Yes, at the moment there is no way to handle this. In general in WF we<br>
&gt;&gt; &gt; just<br>
&gt;&gt; &gt; use the slot main, and we don&#39;t vary any part of a module name based on<br>
&gt;&gt; &gt; a<br>
&gt;&gt; &gt; build parameter.<br>
&gt;&gt;<br>
&gt;&gt; Right, I&#39;m aware that WildFly uses &quot;main&quot; consistently, but since I&#39;m<br>
&gt;&gt; having the impression these tools have a wider scope, I guess such<br>
&gt;&gt; features might be introduced?<br>
&gt;&gt;<br>
&gt;&gt; If I were able to package all the Hibernate libraries and our<br>
&gt;&gt; dependencies into feature packs that should also simplify and speedup<br>
&gt;&gt; the build of WildFly itself, but I need the slots too for the above<br>
&gt;&gt; reasons.<br>
&gt;&gt;<br>
&gt;&gt; For the record, the slots system - and the aliases as well - have been<br>
&gt;&gt; extremely useful for many of our other projects, so thanks again for<br>
&gt;&gt; that.<br>
&gt;&gt;<br>
&gt;<br>
&gt; There is nothing stopping you from using slots, its just that at the moment<br>
&gt; there is no support for the slot name to be dynamic.<br>
&gt;<br>
&gt;&gt;<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; I was hoping for the feature-pack-build.xml to have a way to define<br>
&gt;&gt; &gt;&gt; modules by giving it an identifier (possibly having parameters), point<br>
&gt;&gt; &gt;&gt; them to a template xml (optionally filtered), and not having to deal<br>
&gt;&gt; &gt;&gt; with the copy-to paths explicitly. It seems odd to have to copy the<br>
&gt;&gt; &gt;&gt; jar files and other resources into a matching structure, maybe this<br>
&gt;&gt; &gt;&gt; could be automated by the plugin?<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; You don&#39;t have to copy the jar files, the plugin does it automatically.<br>
&gt;&gt; &gt; They<br>
&gt;&gt; &gt; are laid out the way they are at the moment because it just seemed to be<br>
&gt;&gt; &gt; the<br>
&gt;&gt; &gt; simplest way to do it at the time. We did not need another layer of<br>
&gt;&gt; &gt; indirection as generally each module has its own unique module.xml so if<br>
&gt;&gt; &gt; we<br>
&gt;&gt; &gt; used a templating approach each template would be unique anyway.<br>
&gt;&gt;<br>
&gt;&gt; I&#39;m quite confused on how that&#39;s working, where it&#39;s inferring the<br>
&gt;&gt; details from; I guess I&#39;ll experiment a bit more but I&#39;m not<br>
&gt;&gt; understanding how the tool would know which jars I mean to include in<br>
&gt;&gt; each module.<br>
&gt;<br>
&gt;<br>
&gt; It traverses the modules directory, and looks at each module.xml. Each<br>
&gt; module lists its resource as a maven group and artifact property, somthing<br>
&gt; like:<br>
&gt;<br>
&gt;         &lt;artifact name=&quot;${org.hibernate:<wbr>hibernate-core}&quot;/&gt;<br>
&gt;<br>
&gt; When it assembles the feature pack it looks for the version of hibernate<br>
&gt; core that is declared in the pom, and inserts that version into the feature<br>
&gt; pack. At provisioning time it will either:<br>
&gt;<br>
&gt; - Replace the name with the actual GAV if this is a &#39;thin&#39; server<br>
&gt; - Replace the artifact tag with a &lt;resource&gt; tag and copy the relevant jar<br>
&gt; into the directory if it is a fat server<br>
<br>
</div></div>Thanks, that helped. For the record, I was using<br>
&lt;scope&gt;provided&lt;/scope&gt; for all our dependencies and that somehow<br>
prevented the plugin to figure it out.<br>
<br>
May I suggest to not exlude the &quot;provided&quot; dependencies if there is no<br>
strong reason for that?<br>
<br>
It&#39;s also nicer for consumers of the feature pack, as they won&#39;t have<br>
to exclude &quot;*&quot;, but primarily I&#39;m suggesting this as it caused me some<br>
confusion. If you need to maintain the current behaviour I&#39;d suggest<br>
an explicit error so other people won&#39;t have to debug the plugin.<br>
<br>
Thanks,<br>
Sanne<br>
<div class="HOEnZb"><div class="h5"><br>
&gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; &gt;&gt; Or perhaps I should look at the whole &quot;feature pack&quot; way of doing<br>
&gt;&gt; &gt;&gt; things in a different way; are we supposed to only ever use the &quot;main&quot;<br>
&gt;&gt; &gt;&gt; slot in a feature pack, and allow the consumer to override/filter such<br>
&gt;&gt; &gt;&gt; ids at provisioning time?<br>
&gt;<br>
&gt;<br>
&gt; The slot should not matter, there is nothing really special about the main<br>
&gt; slot from the point of view of the plugin.<br>
&gt;<br>
&gt; Stuart<br>
&gt;<br>
&gt;&gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; You can use whatever slots you want, but at the moment the assumption is<br>
&gt;&gt; &gt; that you will know what those slots are in advance.<br>
&gt;&gt;<br>
&gt;&gt; Sounds great, I&#39;ll go on digging a bit deeper :) Is there some guide<br>
&gt;&gt; beyond the README? All I know is based on the readme and the usage I<br>
&gt;&gt; found in the wildfly/wildfly repository, but that&#39;s way more complex<br>
&gt;&gt; than what I&#39;m trying to build.<br>
&gt;&gt;<br>
&gt;&gt; Thanks!<br>
&gt;&gt; Sanne<br>
&gt;&gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; Stuart<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; Thanks,<br>
&gt;&gt; &gt;&gt; Sanne<br>
&gt;&gt; &gt;&gt; ______________________________<wbr>_________________<br>
&gt;&gt; &gt;&gt; wildfly-dev mailing list<br>
&gt;&gt; &gt;&gt; <a href="mailto:wildfly-dev@lists.jboss.org">wildfly-dev@lists.jboss.org</a><br>
&gt;&gt; &gt;&gt; <a href="https://lists.jboss.org/mailman/listinfo/wildfly-dev" rel="noreferrer" target="_blank">https://lists.jboss.org/<wbr>mailman/listinfo/wildfly-dev</a><br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;<br>
&gt;<br>
</div></div></blockquote></div><br></div>