@@ -202,8 +202,20 @@ let package = Package(
202202 type: . dynamic,
203203 targets: [ " ExampleSwiftLibrary " ]
204204 ) ,
205+ ] ,
206+ traits: [
207+ // guards dependencies pulled by the swift-java tool (source generator)
208+ . trait( name: " _SwiftJavaToolDependencyGuardTrait " , enabledTraits: [ ] ) ,
209+
210+ // guards dependencies pulled by the SwiftJava target to support `@Java...` macros
211+ . trait( name: " _SwiftJavaMacrosDependencyGuardTrait " , enabledTraits: [ ] ) ,
205212
213+ . default( enabledTraits: [
214+ " _SwiftJavaToolDependencyGuardTrait " ,
215+ " _SwiftJavaMacrosDependencyGuardTrait " ,
216+ ] )
206217 ] ,
218+
207219 dependencies: [
208220 . package ( url: " https://github.com/swiftlang/swift-syntax " , from: " 602.0.0 " ) ,
209221 . package ( url: " https://github.com/apple/swift-argument-parser " , from: " 1.5.0 " ) ,
@@ -231,8 +243,16 @@ let package = Package(
231243 . macro(
232244 name: " SwiftJavaMacros " ,
233245 dependencies: [
234- . product( name: " SwiftSyntaxMacros " , package : " swift-syntax " ) ,
235- . product( name: " SwiftCompilerPlugin " , package : " swift-syntax " ) ,
246+ . product(
247+ name: " SwiftSyntaxMacros " ,
248+ package : " swift-syntax " ,
249+ condition: . when( traits: [ " _SwiftJavaMacrosDependencyGuardTrait " ] )
250+ ) ,
251+ . product(
252+ name: " SwiftCompilerPlugin " ,
253+ package : " swift-syntax " ,
254+ condition: . when( traits: [ " _SwiftJavaMacrosDependencyGuardTrait " ] )
255+ ) ,
236256 ] ,
237257 swiftSettings: [
238258 . swiftLanguageMode( . v5)
@@ -403,11 +423,26 @@ let package = Package(
403423 . target(
404424 name: " SwiftJavaToolLib " ,
405425 dependencies: [
406- . product( name: " Logging " , package : " swift-log " ) ,
407- . product( name: " OrderedCollections " , package : " swift-collections " ) ,
408- . product( name: " SwiftBasicFormat " , package : " swift-syntax " ) ,
409- . product( name: " SwiftSyntax " , package : " swift-syntax " ) ,
410- . product( name: " SwiftSyntaxBuilder " , package : " swift-syntax " ) ,
426+ . product(
427+ name: " Logging " , package : " swift-log " ,
428+ condition: . when( traits: [ " _SwiftJavaToolDependencyGuardTrait " ] )
429+ ) ,
430+ . product(
431+ name: " OrderedCollections " , package : " swift-collections " ,
432+ condition: . when( traits: [ " _SwiftJavaToolDependencyGuardTrait " ] )
433+ ) ,
434+ . product(
435+ name: " SwiftBasicFormat " , package : " swift-syntax " ,
436+ condition: . when( traits: [ " _SwiftJavaToolDependencyGuardTrait " ] )
437+ ) ,
438+ . product(
439+ name: " SwiftSyntax " , package : " swift-syntax " ,
440+ condition: . when( traits: [ " _SwiftJavaToolDependencyGuardTrait " ] )
441+ ) ,
442+ . product(
443+ name: " SwiftSyntaxBuilder " , package : " swift-syntax " ,
444+ condition: . when( traits: [ " _SwiftJavaToolDependencyGuardTrait " ] )
445+ ) ,
411446 " SwiftJava " ,
412447 " JavaUtilJar " ,
413448 " JavaLangReflect " ,
@@ -428,11 +463,26 @@ let package = Package(
428463 . executableTarget(
429464 name: " SwiftJavaTool " ,
430465 dependencies: [
431- . product( name: " SwiftBasicFormat " , package : " swift-syntax " ) ,
432- . product( name: " SwiftSyntax " , package : " swift-syntax " ) ,
433- . product( name: " SwiftSyntaxBuilder " , package : " swift-syntax " ) ,
434- . product( name: " ArgumentParser " , package : " swift-argument-parser " ) ,
435- . product( name: " SystemPackage " , package : " swift-system " ) ,
466+ . product(
467+ name: " SwiftBasicFormat " , package : " swift-syntax " ,
468+ condition: . when( traits: [ " _SwiftJavaToolDependencyGuardTrait " ] )
469+ ) ,
470+ . product(
471+ name: " SwiftSyntax " , package : " swift-syntax " ,
472+ condition: . when( traits: [ " _SwiftJavaToolDependencyGuardTrait " ] )
473+ ) ,
474+ . product(
475+ name: " SwiftSyntaxBuilder " , package : " swift-syntax " ,
476+ condition: . when( traits: [ " _SwiftJavaToolDependencyGuardTrait " ] )
477+ ) ,
478+ . product(
479+ name: " ArgumentParser " , package : " swift-argument-parser " ,
480+ condition: . when( traits: [ " _SwiftJavaToolDependencyGuardTrait " ] )
481+ ) ,
482+ . product(
483+ name: " SystemPackage " , package : " swift-system " ,
484+ condition: . when( traits: [ " _SwiftJavaToolDependencyGuardTrait " ] )
485+ ) ,
436486 " SwiftJava " ,
437487 " JavaUtilJar " ,
438488 " JavaNet " ,
@@ -455,11 +505,26 @@ let package = Package(
455505 . target(
456506 name: " JExtractSwiftLib " ,
457507 dependencies: [
458- . product( name: " SwiftBasicFormat " , package : " swift-syntax " ) ,
459- . product( name: " SwiftLexicalLookup " , package : " swift-syntax " ) ,
460- . product( name: " SwiftSyntax " , package : " swift-syntax " ) ,
461- . product( name: " SwiftSyntaxBuilder " , package : " swift-syntax " ) ,
462- . product( name: " ArgumentParser " , package : " swift-argument-parser " ) ,
508+ . product(
509+ name: " SwiftBasicFormat " , package : " swift-syntax " ,
510+ condition: . when( traits: [ " _SwiftJavaToolDependencyGuardTrait " ] )
511+ ) ,
512+ . product(
513+ name: " SwiftLexicalLookup " , package : " swift-syntax " ,
514+ condition: . when( traits: [ " _SwiftJavaToolDependencyGuardTrait " ] )
515+ ) ,
516+ . product(
517+ name: " SwiftSyntax " , package : " swift-syntax " ,
518+ condition: . when( traits: [ " _SwiftJavaToolDependencyGuardTrait " ] )
519+ ) ,
520+ . product(
521+ name: " SwiftSyntaxBuilder " , package : " swift-syntax " ,
522+ condition: . when( traits: [ " _SwiftJavaToolDependencyGuardTrait " ] )
523+ ) ,
524+ . product(
525+ name: " ArgumentParser " , package : " swift-argument-parser " ,
526+ condition: . when( traits: [ " _SwiftJavaToolDependencyGuardTrait " ] ) ,
527+ ) ,
463528 " JavaTypes " ,
464529 " SwiftJavaShared " ,
465530 " SwiftJavaConfigurationShared " ,
0 commit comments