@@ -75,8 +75,19 @@ extension SwiftJava.ResolveCommand {
7575 return
7676 }
7777
78+ var repositoriesToResolve : [ JavaRepositoryDescriptor ] = [ ]
79+
80+ if let repositories = config. repositories {
81+ repositoriesToResolve += repositories
82+ }
83+
84+ if !repositoriesToResolve. contains ( where: { $0. type == . mavenCentral } ) {
85+ // swift-java dependencies are originally located in mavenCentral
86+ repositoriesToResolve. append ( JavaRepositoryDescriptor ( type: . mavenCentral) )
87+ }
88+
7889 let dependenciesClasspath =
79- try await resolveDependencies ( swiftModule: swiftModule, dependencies: dependenciesToResolve)
90+ try await resolveDependencies ( swiftModule: swiftModule, dependencies: dependenciesToResolve, repositories : repositoriesToResolve )
8091
8192 // FIXME: disentangle the output directory from SwiftJava and then make it a required option in this Command
8293 guard let outputDirectory = self . commonOptions. outputDirectory else {
@@ -99,12 +110,13 @@ extension SwiftJava.ResolveCommand {
99110 ///
100111 /// - Throws:
101112 func resolveDependencies(
102- swiftModule: String , dependencies: [ JavaDependencyDescriptor ]
113+ swiftModule: String , dependencies: [ JavaDependencyDescriptor ] ,
114+ repositories: [ JavaRepositoryDescriptor ]
103115 ) async throws -> ResolvedDependencyClasspath {
104116 let deps = dependencies. map { $0. descriptionGradleStyle }
105117 print ( " [debug][swift-java] Resolve and fetch dependencies for: \( deps) " )
106118
107- let dependenciesClasspath = await resolveDependencies ( dependencies: dependencies)
119+ let dependenciesClasspath = await resolveDependencies ( dependencies: dependencies, repositories : repositories )
108120 let classpathEntries = dependenciesClasspath. split ( separator: " : " )
109121
110122 print ( " [info][swift-java] Resolved classpath for \( deps. count) dependencies of ' \( swiftModule) ', classpath entries: \( classpathEntries. count) , " , terminator: " " )
@@ -119,10 +131,11 @@ extension SwiftJava.ResolveCommand {
119131
120132
121133 /// Resolves maven-style dependencies from swift-java.config under temporary project directory.
122- ///
134+ ///
123135 /// - Parameter dependencies: maven-style dependencies to resolve
136+ /// - Parameter repositories: maven-style repositories to resolve
124137 /// - Returns: Colon-separated classpath
125- func resolveDependencies( dependencies: [ JavaDependencyDescriptor ] ) async -> String {
138+ func resolveDependencies( dependencies: [ JavaDependencyDescriptor ] , repositories : [ JavaRepositoryDescriptor ] ) async -> String {
126139 let workDir = URL ( fileURLWithPath: FileManager . default. currentDirectoryPath)
127140 . appendingPathComponent ( " .build " )
128141 let resolverDir = try ! createTemporaryDirectory ( in: workDir)
@@ -135,7 +148,7 @@ extension SwiftJava.ResolveCommand {
135148
136149 try ! copyGradlew ( to: resolverDir)
137150
138- try ! printGradleProject ( directory: resolverDir, dependencies: dependencies)
151+ try ! printGradleProject ( directory: resolverDir, dependencies: dependencies, repositories : repositories )
139152
140153 if #available( macOS 15 , * ) {
141154 let process = try ! await _Subprocess. run (
@@ -173,14 +186,16 @@ extension SwiftJava.ResolveCommand {
173186 }
174187
175188 /// Creates Gradle project files (build.gradle, settings.gradle.kts) in temporary directory.
176- func printGradleProject( directory: URL , dependencies: [ JavaDependencyDescriptor ] ) throws {
189+ func printGradleProject( directory: URL , dependencies: [ JavaDependencyDescriptor ] , repositories : [ JavaRepositoryDescriptor ] ) throws {
177190 let buildGradle = directory
178191 . appendingPathComponent ( " build.gradle " , isDirectory: false )
179192
180193 let buildGradleText =
181194 """
182195 plugins { id 'java-library' }
183- repositories { mavenCentral() }
196+ repositories {
197+ \( repositories. compactMap ( \. descriptionGradleStyle) . joined ( separator: " \n " ) )
198+ }
184199
185200 dependencies {
186201 \( dependencies. map ( { dep in " implementation( \" \( dep. descriptionGradleStyle) \" ) " } ) . joined ( separator: " , \n " ) )
0 commit comments