Skip to content

Commit a3e618f

Browse files
committed
Switch gRPC plugins for Maven builds
Signed-off-by: Dave Syer <[email protected]>
1 parent 9c478d3 commit a3e618f

File tree

3 files changed

+42
-74
lines changed

3 files changed

+42
-74
lines changed

start-site/src/main/java/io/spring/start/site/extension/dependency/springgrpc/GrpcMavenBuildCustomizer.java

Lines changed: 12 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ class GrpcMavenBuildCustomizer implements BuildCustomizer<MavenBuild> {
3131

3232
private static final String OS_PLUGIN_VERSION = "1.7.1";
3333

34-
private static final String PROTOBUF_PLUGIN_VERSION = "0.6.1";
34+
private static final String PROTOBUF_PLUGIN_VERSION = "3.2.3";
3535

3636
private final String protobufJavaVersion;
3737

@@ -47,7 +47,6 @@ public void customize(MavenBuild build) {
4747
VersionProperty protobufJava = VersionProperty.of("protobuf-java.version");
4848
VersionProperty grpc = VersionProperty.of("grpc.version");
4949
addVersionProperties(build.properties(), protobufJava, grpc);
50-
addOsPlugin(build.plugins());
5150
addProtobufPlugin(build.plugins(), protobufJava, grpc);
5251
}
5352

@@ -57,31 +56,21 @@ private void addVersionProperties(PropertyContainer properties, VersionProperty
5756
properties.version(grpc, this.grpcVersion);
5857
}
5958

60-
private void addOsPlugin(MavenPluginContainer plugins) {
61-
plugins.add("kr.motd.maven", "os-maven-plugin", (plugin) -> {
62-
plugin.version(OS_PLUGIN_VERSION);
63-
plugin.execution("initialize", (execution) -> {
64-
execution.phase("initialize");
65-
execution.goal("detect");
66-
});
67-
});
68-
}
69-
7059
private void addProtobufPlugin(MavenPluginContainer plugins, VersionProperty protobufJava, VersionProperty grpc) {
71-
plugins.add("org.xolstice.maven.plugins", "protobuf-maven-plugin", (plugin) -> {
60+
plugins.add("io.github.ascopes", "protobuf-maven-plugin", (plugin) -> {
7261
plugin.version(PROTOBUF_PLUGIN_VERSION);
7362
plugin.configuration((configuration) -> {
74-
configuration.add("protocArtifact", "com.google.protobuf:protoc:${%s}:exe:${os.detected.classifier}"
75-
.formatted(protobufJava.toStandardFormat()));
76-
configuration.add("pluginId", "grpc-java");
77-
configuration.add("pluginArtifact", "io.grpc:protoc-gen-grpc-java:${%s}:exe:${os.detected.classifier}"
78-
.formatted(grpc.toStandardFormat()));
79-
});
80-
plugin.execution("compile", (execution) -> {
81-
execution.goal("compile").goal("compile-custom");
82-
execution.configuration(
83-
(configuration) -> configuration.add("pluginParameter", "jakarta_omit,@generated=omit"));
63+
configuration.add("protocVersion", "${%s}".formatted(protobufJava.toStandardFormat()));
64+
configuration.add("binaryMavenPlugins", (builder) -> {
65+
builder.add("binaryMavenPlugin", (binary) -> {
66+
binary.add("groupId", "io.grpc");
67+
binary.add("artifactId", "protoc-gen-grpc-java");
68+
binary.add("version", "${%s}".formatted(grpc.toStandardFormat()));
69+
binary.add("options", "jakarta_omit,@generated=omit");
70+
});
71+
});
8472
});
73+
plugin.execution("generate", (execution) -> execution.goal("generate"));
8574
});
8675
}
8776

start-site/src/main/java/io/spring/start/site/extension/dependency/springgrpc/GrpcProjectContributor.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,15 +23,15 @@
2323
import io.spring.initializr.generator.project.contributor.ProjectContributor;
2424

2525
/**
26-
* A {@link ProjectContributor} that creates the "src/main/proto" directory.
26+
* A {@link ProjectContributor} that creates the "src/main/protobuf" directory.
2727
*
2828
* @author Moritz Halbritter
2929
*/
3030
class GrpcProjectContributor implements ProjectContributor {
3131

3232
@Override
3333
public void contribute(Path projectRoot) throws IOException {
34-
Path protoDirectory = projectRoot.resolve("src/main/proto");
34+
Path protoDirectory = projectRoot.resolve("src/main/protobuf");
3535
Files.createDirectories(protoDirectory);
3636
}
3737

start-site/src/test/java/io/spring/start/site/extension/dependency/springgrpc/SpringGrpcProjectGenerationConfigurationTests.java

Lines changed: 28 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -37,11 +37,10 @@ void shouldDoNothingIfSpringGrpcIsntSelected() {
3737
ProjectRequest request = createProjectRequest("web");
3838
assertThat(mavenPom(request)).doesNotHaveDependency("io.grpc", "grpc-services")
3939
.doesNotHaveDependency("org.springframework.grpc", "spring-grpc-test")
40-
.doesNotContain("os-maven-plugin")
4140
.doesNotContain("protobuf-maven-plugin")
4241
.doesNotHaveProperty("grpc.version")
4342
.doesNotHaveProperty("protobuf-java.version");
44-
assertThat(generateProject(request)).doesNotContainDirectories("src/main/proto");
43+
assertThat(generateProject(request)).doesNotContainDirectories("src/main/protobuf");
4544
}
4645

4746
@Test
@@ -115,63 +114,43 @@ void shouldAddGrpcPluginAndConfigurationForGradleKotlin() {
115114
""");
116115
}
117116

118-
@Test
119-
void shouldAddOsPluginForMaven() {
120-
ProjectRequest request = createProjectRequest(SPRING_GRPC);
121-
assertThat(mavenPom(request)).containsIgnoringWhitespaces("""
122-
<plugin>
123-
<groupId>kr.motd.maven</groupId>
124-
<artifactId>os-maven-plugin</artifactId>
125-
<version>1.7.1</version>
126-
<executions>
127-
<execution>
128-
<id>initialize</id>
129-
<phase>initialize</phase>
130-
<goals>
131-
<goal>detect</goal>
132-
</goals>
133-
</execution>
134-
</executions>
135-
</plugin>
136-
""");
137-
}
138-
139117
@Test
140118
void shouldAddProtobufPluginForMaven() {
141119
ProjectRequest request = createProjectRequest(SPRING_GRPC);
142120
assertThat(mavenPom(request)).hasProperty("grpc.version", "1.72.0")
143121
.hasProperty("protobuf-java.version", "4.30.2")
144-
.containsIgnoringWhitespaces(
145-
"""
146-
<plugin>
147-
<groupId>org.xolstice.maven.plugins</groupId>
148-
<artifactId>protobuf-maven-plugin</artifactId>
149-
<version>0.6.1</version>
150-
<configuration>
151-
<protocArtifact>com.google.protobuf:protoc:${protobuf-java.version}:exe:${os.detected.classifier}</protocArtifact>
152-
<pluginId>grpc-java</pluginId>
153-
<pluginArtifact>io.grpc:protoc-gen-grpc-java:${grpc.version}:exe:${os.detected.classifier}</pluginArtifact>
154-
</configuration>
155-
<executions>
156-
<execution>
157-
<id>compile</id>
158-
<goals>
159-
<goal>compile</goal>
160-
<goal>compile-custom</goal>
161-
</goals>
162-
<configuration>
163-
<pluginParameter>jakarta_omit,@generated=omit</pluginParameter>
164-
</configuration>
165-
</execution>
166-
</executions>
167-
</plugin>
168-
""");
122+
.containsIgnoringWhitespaces("""
123+
<plugin>
124+
<groupId>io.github.ascopes</groupId>
125+
<artifactId>protobuf-maven-plugin</artifactId>
126+
<version>3.2.3</version>
127+
<configuration>
128+
<protocVersion>${protobuf-java.version}</protocVersion>
129+
<binaryMavenPlugins>
130+
<binaryMavenPlugin>
131+
<groupId>io.grpc</groupId>
132+
<artifactId>protoc-gen-grpc-java</artifactId>
133+
<version>${grpc.version}</version>
134+
<options>jakarta_omit,@generated=omit</options>
135+
</binaryMavenPlugin>
136+
</binaryMavenPlugins>
137+
</configuration>
138+
<executions>
139+
<execution>
140+
<id>generate</id>
141+
<goals>
142+
<goal>generate</goal>
143+
</goals>
144+
</execution>
145+
</executions>
146+
</plugin>
147+
""");
169148
}
170149

171150
@Test
172151
void shouldCreateSrcMainProtoDirectory() {
173152
ProjectRequest request = createProjectRequest(SPRING_GRPC);
174-
assertThat(generateProject(request)).containsDirectories("src/main/proto");
153+
assertThat(generateProject(request)).containsDirectories("src/main/protobuf");
175154
}
176155

177156
@Test

0 commit comments

Comments
 (0)