@@ -168,9 +168,9 @@ def _parse_maven_coordinates(coordinate_string):
168168
169169def _generate_pom_xml (ctx , maven_coordinates ):
170170 # Final 'pom.xml' is generated in 2 steps
171- preprocessed_template = ctx .actions .declare_file ("_pom.xml" )
171+ preprocessed_template = ctx .actions .declare_file ("_{} _pom.xml" . format ( ctx . attr . name ) )
172172
173- pom_file = ctx .actions .declare_file ("pom .xml" )
173+ pom_file = ctx .actions .declare_file ("{}_pom .xml" . format ( ctx . attr . name ) )
174174
175175 maven_pom_deps = ctx .attr .target [MavenPomInfo ].maven_pom_deps
176176 deps_coordinates = depset (maven_pom_deps ).to_list ()
@@ -263,18 +263,23 @@ def _generate_pom_xml(ctx, maven_coordinates):
263263
264264def _assemble_maven_impl (ctx ):
265265 target = ctx .attr .target
266- target_string = target [JavaLibInfo ].target_coordinates .to_list ()[0 ]
266+ target_string = target [JavaLibInfo ].target_coordinates .to_list ()[- 1 ]
267267
268268 maven_coordinates = _parse_maven_coordinates (target_string )
269269
270270 pom_file = _generate_pom_xml (ctx , maven_coordinates )
271271
272272 # there is also .source_jar which produces '.srcjar'
273- if hasattr (target , "java" ):
274- jar = target [JavaInfo ].outputs .jars [0 ].class_jar
275- srcjar = target [JavaInfo ].outputs .jars [0 ].source_jar
276- elif hasattr (target , "files" ):
277- jar = target .files .to_list ()[0 ]
273+ srcjar = None
274+
275+ if hasattr (target , "files" ) and target .files .to_list () and target .files .to_list ()[0 ].extension == 'jar' :
276+ all_jars = target [JavaInfo ].outputs .jars
277+ jar = all_jars [0 ].class_jar
278+
279+ for output in all_jars :
280+ if output .source_jar .basename .endswith ('-src.jar' ):
281+ srcjar = output .source_jar
282+ break
278283 else :
279284 fail ("Could not find JAR file to deploy in {}" .format (target ))
280285
@@ -287,10 +292,16 @@ def _assemble_maven_impl(ctx):
287292 executable = ctx .executable ._assemble_script ,
288293 )
289294
290- return [
291- DefaultInfo (files = depset ([output_jar , pom_file , srcjar ])),
292- MavenDeploymentInfo (jar = output_jar , pom = pom_file , srcjar = srcjar )
293- ]
295+ if srcjar == None :
296+ return [
297+ DefaultInfo (files = depset ([output_jar , pom_file ])),
298+ MavenDeploymentInfo (jar = output_jar , pom = pom_file )
299+ ]
300+ else :
301+ return [
302+ DefaultInfo (files = depset ([output_jar , pom_file , srcjar ])),
303+ MavenDeploymentInfo (jar = output_jar , pom = pom_file , srcjar = srcjar )
304+ ]
294305
295306assemble_maven = rule (
296307 attrs = {
@@ -370,7 +381,7 @@ def _deploy_maven_impl(ctx):
370381
371382 lib_jar_link = "lib.jar"
372383 src_jar_link = "lib.srcjar"
373- pom_xml_link = " pom.xml"
384+ pom_xml_link = ctx . attr . target [ MavenDeploymentInfo ]. pom .basename
374385
375386 ctx .actions .expand_template (
376387 template = ctx .file ._deployment_script ,
@@ -403,6 +414,7 @@ _default_deployment_properties = None if 'deployment_properties_placeholder' in
403414deploy_maven = rule (
404415 attrs = {
405416 "target" : attr .label (
417+ mandatory = True ,
406418 providers = [MavenDeploymentInfo ],
407419 doc = "assemble_maven target to deploy"
408420 ),
0 commit comments