Comments (3)
@swankjesse Did you also find a Multiplatform solution to exclude the generated resources?
from ksp.
I have a necessary workaround in my codebase
val resourcesDir = codeGenerator::class.java
.getDeclaredMethod("extensionToDirectory", String::class.java)
.apply { isAccessible = true }
.invoke(codeGenerator, "json") as File
codeGenerator::class.java
.getDeclaredMethod("createNewFile", Dependencies::class.java, String::class.java, File::class.java)
.apply { isAccessible = true }
.invoke(codeGenerator, dependencies, "data.json", resourcesDir.parentFile) as OutputStream
but would greatly prefer real support.
from ksp.
I have a straw man solution. I propose a new overload of CodeGenerator.createNewFile()
:
/**
* The relative path should include 0 or more directories and a file
* name complete with extension appropriate for the generated file
* type. Some examples:
*
* * "com/example/project/MyGeneratedFile.kt"
* * "com/example/project/MyGeneratedFile.java"
* * "my-resource-directory/my-resource.txt"
* * "my-build-directory/my-build-output.txt"
*/
fun createNewFile(
dependencies: Dependencies,
relativePath: String,
type: GeneratedFileType,
): OutputStream
enum class GeneratedFileType {
KotlinSource,
JavaSouce,
Resource,
BuildOutput,
}
This mechanism would be more explicit than the current API that checks extension names. It would also satisfy my use case of generating files that are neither source code nor resources.
from ksp.
Related Issues (20)
- [KSP2] Class values in type annotations get resolved to error type
- [KSP2] The status was unresolved for FirSimpleFunctionImpl HOT 1
- [KSP2] KSPropertyDeclaration.hasBackingField returns inconsistent results
- Generated files not accesible after upgrade to kotlin 2.0.0 HOT 3
- [KSP2] A failure occurred while executing com.google.devtools.ksp.gradle.KspAAWorkerAction
- kspKotlin -api-version (2.0) cannot be greater than -language-version (1.9) HOT 1
- Project Isolation: Project cannot access task dependencies directly
- Kotlin 2.0.0 and ksp 2.0.0-1.0.21: UnsatisfiedLinkError: Can't load library: .../native/jansi/1.18/osx/libjansi.jnilib HOT 1
- KSP2 default annotation KClass values for built-in types use java.lang.* versions HOT 3
- [KSP2] Resolver.getDeclarationsFromPackage() couldn't find Java declarations
- `IllegalAccessError` in Dagger with KSP2.0.0-1.0.22 and KSP2 HOT 1
- "KSTypeArgument.type should not have been null, please file a bug. STAR null" with KSP2.0.0-1.0.22 and KSP2 HOT 2
- [KSP2] Property getter JVM names in data classes become componentN instead of getXXX
- Got IllegalStateException when calling replace() on error types
- Annotations on enum entires on K2 are missing HOT 2
- [KSP2] NullPointerException when getting name of nested annotation HOT 1
- Problematic use of Project.detachedConfiguration for KSP2 HOT 1
- KSP2: IllegalArgumentException: Failed requirement. HOT 9
- A failure occurred while executing com.google.devtools.ksp.gradle.KspAAWorkerAction HOT 3
- Variance is missing after asMemberOf call
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from ksp.