Skip to content

Commit

Permalink
Add an automatic module name entry into the MANIFEST.MF to support JPMS.
Browse files Browse the repository at this point in the history
Fixes #1079.

RELNOTES=Added an automatic module name to the Dagger artifact
PiperOrigin-RevId: 376045144
  • Loading branch information
Chang-Eric authored and Dagger Team committed May 26, 2021
1 parent 50f54ee commit cb30885
Show file tree
Hide file tree
Showing 3 changed files with 73 additions and 20 deletions.
43 changes: 31 additions & 12 deletions util/deploy-dagger.sh
Original file line number Diff line number Diff line change
Expand Up @@ -14,16 +14,20 @@ readonly EXTRA_MAVEN_ARGS=("$@")
# parameter, if provided then javadoc must also be provided.
# @param {string} javadoc the java doc jar of the library. This is an optional
# parameter, if provided then srcjar must also be provided.
# @param {string} module_name the JPMS module name to include in the jar. This
# is an optional parameter and can only be used with jar files.
_deploy() {
local library=$1
local pomfile=$2
local srcjar=$3
local javadoc=$4
local module_name=$5
bash $(dirname $0)/deploy-library.sh \
"$library" \
"$pomfile" \
"$srcjar" \
"$javadoc" \
"$module_name" \
"$MVN_GOAL" \
"$VERSION_NAME" \
"${EXTRA_MAVEN_ARGS[@]:+${EXTRA_MAVEN_ARGS[@]}}"
Expand All @@ -33,88 +37,103 @@ _deploy \
java/dagger/libcore.jar \
java/dagger/pom.xml \
java/dagger/libcore-src.jar \
java/dagger/core-javadoc.jar
java/dagger/core-javadoc.jar \
"dagger"

_deploy \
gwt/libgwt.jar \
gwt/pom.xml \
gwt/libgwt.jar \
gwt/libgwt.jar
gwt/libgwt.jar \
""

_deploy \
java/dagger/internal/codegen/artifact.jar \
java/dagger/internal/codegen/pom.xml \
java/dagger/internal/codegen/artifact-src.jar \
java/dagger/internal/codegen/artifact-javadoc.jar
java/dagger/internal/codegen/artifact-javadoc.jar \
""

_deploy \
java/dagger/producers/artifact.jar \
java/dagger/producers/pom.xml \
java/dagger/producers/artifact-src.jar \
java/dagger/producers/artifact-javadoc.jar
java/dagger/producers/artifact-javadoc.jar \
""

_deploy \
java/dagger/spi/artifact.jar \
java/dagger/spi/pom.xml \
java/dagger/spi/artifact-src.jar \
java/dagger/spi/artifact-javadoc.jar
java/dagger/spi/artifact-javadoc.jar \
""

_deploy \
java/dagger/android/android.aar \
java/dagger/android/pom.xml \
java/dagger/android/libandroid-src.jar \
java/dagger/android/android-javadoc.jar
java/dagger/android/android-javadoc.jar \
""

_deploy \
java/dagger/android/android-legacy.aar \
java/dagger/android/legacy-pom.xml \
"" \
"" \
""

_deploy \
java/dagger/android/support/support.aar \
java/dagger/android/support/pom.xml \
java/dagger/android/support/libsupport-src.jar \
java/dagger/android/support/support-javadoc.jar
java/dagger/android/support/support-javadoc.jar \
""

_deploy \
java/dagger/android/support/support-legacy.aar \
java/dagger/android/support/legacy-pom.xml \
"" \
"" \
""

_deploy \
shaded_android_processor.jar \
java/dagger/android/processor/pom.xml \
java/dagger/android/processor/libprocessor-src.jar \
java/dagger/android/processor/processor-javadoc.jar
java/dagger/android/processor/processor-javadoc.jar \
""

_deploy \
java/dagger/grpc/server/libserver.jar \
java/dagger/grpc/server/server-pom.xml \
java/dagger/grpc/server/libserver-src.jar \
java/dagger/grpc/server/javadoc.jar
java/dagger/grpc/server/javadoc.jar \
""

_deploy \
java/dagger/grpc/server/libannotations.jar \
java/dagger/grpc/server/annotations-pom.xml \
java/dagger/grpc/server/libannotations-src.jar \
java/dagger/grpc/server/javadoc.jar
java/dagger/grpc/server/javadoc.jar \
""

_deploy \
shaded_grpc_server_processor.jar \
java/dagger/grpc/server/processor/pom.xml \
java/dagger/grpc/server/processor/libprocessor-src.jar \
java/dagger/grpc/server/processor/javadoc.jar
java/dagger/grpc/server/processor/javadoc.jar \
""

_deploy \
java/dagger/lint/lint-artifact.jar \
java/dagger/lint/lint-pom.xml \
java/dagger/lint/lint-artifact-src.jar \
java/dagger/lint/lint-artifact-javadoc.jar
java/dagger/lint/lint-artifact-javadoc.jar \
""

_deploy \
java/dagger/lint/lint-android-artifact.aar \
java/dagger/lint/lint-android-pom.xml \
"" \
"" \
""
19 changes: 14 additions & 5 deletions util/deploy-hilt.sh
Original file line number Diff line number Diff line change
Expand Up @@ -14,16 +14,20 @@ readonly EXTRA_MAVEN_ARGS=("$@")
# parameter, if provided then javadoc must also be provided.
# @param {string} javadoc the java doc jar of the library. This is an optional
# parameter, if provided then srcjar must also be provided.
# @param {string} module_name the JPMS module name to include in the jar. This
# is an optional parameter and can only be used with jar files.
_deploy() {
local library=$1
local pomfile=$2
local srcjar=$3
local javadoc=$4
local module_name=$5
bash $(dirname $0)/deploy-library.sh \
"$library" \
"$pomfile" \
"$srcjar" \
"$javadoc" \
"$module_name" \
"$MVN_GOAL" \
"$VERSION_NAME" \
"${EXTRA_MAVEN_ARGS[@]:+${EXTRA_MAVEN_ARGS[@]}}"
Expand All @@ -33,28 +37,33 @@ _deploy \
java/dagger/hilt/android/artifact.aar \
java/dagger/hilt/android/pom.xml \
java/dagger/hilt/android/artifact-src.jar \
java/dagger/hilt/android/artifact-javadoc.jar
java/dagger/hilt/android/artifact-javadoc.jar \
""

_deploy \
java/dagger/hilt/android/testing/artifact.aar \
java/dagger/hilt/android/testing/pom.xml \
java/dagger/hilt/android/testing/artifact-src.jar \
java/dagger/hilt/android/testing/artifact-javadoc.jar
java/dagger/hilt/android/testing/artifact-javadoc.jar \
""

_deploy \
java/dagger/hilt/processor/artifact.jar \
java/dagger/hilt/processor/pom.xml \
java/dagger/hilt/processor/artifact-src.jar \
java/dagger/hilt/processor/artifact-javadoc.jar
java/dagger/hilt/processor/artifact-javadoc.jar \
""

_deploy \
java/dagger/hilt/android/processor/artifact.jar \
java/dagger/hilt/android/processor/pom.xml \
java/dagger/hilt/android/processor/artifact-src.jar \
java/dagger/hilt/android/processor/artifact-javadoc.jar
java/dagger/hilt/android/processor/artifact-javadoc.jar \
""

_deploy \
java/dagger/hilt/artifact-core.jar \
java/dagger/hilt/pom.xml \
java/dagger/hilt/artifact-core-src.jar \
java/dagger/hilt/artifact-core-javadoc.jar
java/dagger/hilt/artifact-core-javadoc.jar \
""
31 changes: 28 additions & 3 deletions util/deploy-library.sh
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,17 @@ set -eu
# parameter, if provided then javadoc must also be provided.
# @param {string} javadoc the java doc jar of the library. This is an optional
# parameter, if provided then srcjar must also be provided.
# @param {string} module_name the JPMS module name to include in the jar. This
# is an optional parameter and can only be used with jar files.
deploy_library() {
local library=$1
local pomfile=$2
local srcjar=$3
local javadoc=$4
local mvn_goal=$5
local version_name=$6
shift 6
local module_name=$5
local mvn_goal=$6
local version_name=$7
shift 7
local extra_maven_args=("$@")

bazel build --define=pom_version="$version_name" \
Expand All @@ -29,6 +32,12 @@ deploy_library() {
$(bazel_output_file $pomfile) \
$version_name

# TODO(bcorso): Consider moving this into the "gen_maven_artifact" macro once
# all our targets are using gen_maven_artifact
add_automatic_module_name_manifest_entry \
$(bazel_output_file $library) \
"${module_name}"

if [ -n "$srcjar" ] && [ -n "$javadoc" ] ; then
bazel build --define=pom_version="$version_name" \
$srcjar $javadoc
Expand Down Expand Up @@ -81,6 +90,22 @@ add_tracking_version() {
fi
}

add_automatic_module_name_manifest_entry() {
local library=$1
local module_name=$2
if [ -n "$module_name" ] ; then
if [[ $library =~ \.jar$ ]]; then
local temp_dir=$(mktemp -d)
echo "Automatic-Module-Name: ${module_name}" > $temp_dir/module_name_file
# The "m" flag is specifically for adding manifest entries.
jar ufm $library $temp_dir/module_name_file
else
echo "Could not add module name to $library"
exit 1
fi
fi
}

find_pom_value() {
local pomfile=$1
local attribute=$2
Expand Down

0 comments on commit cb30885

Please sign in to comment.