# Maven published rules - additional rules to publish, to help
# the packaging work of Debian maintainers using mh_make
# Format of this file is:
# [group] [artifact] [type] [version] [classifier] [scope]
# where each element can be either
# - the exact string, for example org.apache for the group, or 3.1
#   for the version. In this case, the element is simply matched
#   and left as it is
# - * (the star character, alone). In this case, anything will
#   match and be left as it is. For example, using * on the
#  position of the artifact field will match any artifact id
# - a regular expression of the form s/match/replace/
#   in this case, elements that match are transformed using
#   the regex rule.
# All elements much match before a rule can be applied
# Example rule: match jar with groupid= junit, artifactid= junit
# and version starting with 3., replacing the version with 3.x
#   junit junit jar s/3\..*/3.x/

